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);
});

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).

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.

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).

In questo articolo vedremo un semplice modo per centrare i frame nello schermo indipendentemente dalla dimensione.

Il mio JFrame è creato con NetBeans e non lo posterò tutto, ma solo la parte interessata:

import java.awt.*;
.....
public FrameBanca() {
initComponents();
Dimension dim = getToolkit().getScreenSize();
this.setLocation(dim.width / 2 - this.getWidth() / 2, dim.height / 2 - this.getHeight() / 2);
}
......