swing

Mattepuffo's logo
Usare JavaFX dentro a Swing

Usare JavaFX dentro a Swing

JavaFX e Swing rappresentano i toolkit grafici più usati in ambito Java; in cui JavaFX è considerato quello del futuro, riespetto a Swing che sarà pian piano abbandonato.

Però ho avuto un problema che ho dovuto risolvere usandoli insieme.

In pratica, in un progetto JavaFX, sto usando HTMLEditor; solo che il tasto invio non funziona, ed al suo posto bisogna usare CTRL+M.

Girando ho capito che si tratta di un bug abbastanza noto.

Mattepuffo's logo
Stampare immagini in Java

Stampare immagini in Java

In sostanza vediamo come mandare in stampa più immagini contemporaneamente usando Java; ogni immagine occupa una pagina, quindi non dobbiamo occuparci di sistemare più immagini in una pagina.

Per fare questo useremo una classe che implementa Printable (di AWT).

A questa classe passeremo un array di BufferedImage, sul quale itereremo per "sistemare" e stampare le immagini.

Mattepuffo's logo
Java SwingWorker e Reflection

Java SwingWorker e Reflection

In questo articolo, abbiamo visto come creare dei JDialog in ambiente multi-thread con SwingWorker.

Oggi vediamo un esempio simile, ma usando la Reflection.

Il risultato finale è lo stesso, ma il codice è più pulito.

Partiamo dall'evento nel nostro JFrame:

btnConnect.addActionListener((ActionEvent e) -> {
    final GenericDialog loading = new GenericDialog(this, "", "Loading...");
    BackgroundOperation bo = new BackgroundOperation("com_mattepuffo_book.FormBook", "createConnection", loading);
    bo.execute();
    loading.setVisible(true);
});

Mattepuffo's logo
Creare dei loading dialog in Java

Creare dei loading dialog in Java

Quello che vediamo oggi è come creare un JDialog che compare in fase di caricamento, e che scompare al termine dell'operazione.

Un loading dialog in sostanza.

Partiamo da un JDialog tipo quello che ho postato in questo articolo (ma uno vale l'altro).

Mattepuffo's logo
Esportare una JList in Java

Esportare una JList in Java

JList è un componente SWING che rappresenta una serie di oggetti sotto forma di lista.

Qui avevo spiegato come caricare una JLlist da una file XML per esempio.

Oggi vediamo come esportarli in formato TXT.

Inoltre integreremo utto con il solit JFileChooser per decidere dove salvare il file.

Prima di tutto nel vostro JFrame preparate l'evento che poi richiamerà il JFC (ad esempio un menu o un bottone).

Poi preparate il JFC; tipo questo:

import java.io.File;
import java.io.IOException;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;

public class FileChooserTxt {

    private static File f = null;

    public static String salva() throws IOException {
        JFileChooser fc = new JFileChooser();
        fc.setDialogTitle("Save TXT");
        fc.setApproveButtonText("Save");
        fc.setApproveButtonToolTipText("Approve file");

        FileFilter txtFilter = new GenericFileFilter("File *.txt", "txt");
        fc.setFileFilter(txtFilter);

        int returnVal = fc.showSaveDialog(fc);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            f = fc.getSelectedFile();
            FileFilter selectedFilter = fc.getFileFilter();
            if (f.getName().indexOf('.') == -1) {
                f = new File(f.getPath() + ".txt");
            }
        }
        return f.toString();
    }
}

Qui ho messo un solo filtro perchè l'esportazione la faccio solo in TXT.

Mattepuffo's logo
Impostare gli mnemonici in JTabbedPane

Impostare gli mnemonici in JTabbedPane

Il JTabbedPane è qual componente SWING che ci permette di creare interfacce grafiche a tab.

Se usate il Look & Feel di default del sistema operativo potete usare la classica combinazione Ctrl + TAB per spostarvi tra i vari tab.

Ma se usate un altro Look & Feel, o se lo volete a prescindere per un fattore di comodità, potete impostare una vostra combinazione di tasti per richiamare i vari tab.

Io da esempio ho messo ALT + 1 al primo tab, e ALT + 2 al secondo.

Se ci basta ALT + qualcosa, ci basta impostare lo mnemonico.

Farlo è molto semplice.

Prima di tutto istanziamo un JTabbedPane e aggiungiamo due JPanel:

javax.swing.JTabbedPane jTabbedPane1 = new javax.swing.JTabbedPane();

jTabbedPane1.addTab("Panel 1", jpanel1);

jTabbedPane1.addTab("Panel 2", jpanel2);

Grosso modo una cosa del genere (dipende anche da che IDE usate e se lo usate).