Creazione Form in Java Swing tramite classe generica
Ecco come realizzare una classe generica, molto utile, per lo sviluppo di Form quando realizziamo i nostri programmi Desktop in Java Swing
Sicuramente vi sarà capitato di dover creare delle form in Java Swing e pensare quindi al duro lavoro, più che altro di pazienza, che vi attendeva. Le Swing sono eccezionali, permettono di creare GUI molto dinamiche e belle graficamente.
Il problema deve essere risolto: Unire semplicità di utilizzo delle Swing senza ricorrere ad un plugin grafico aggiuntivo per tool tipo Eclipse per creare GUI. Ho pensato,quindi, di creare una classe generica che quando viene istanziata permette la creazione di form dinamiche.
Creiamo il nostro file java “Generic.java” che permetterà di creare la form dinamica. Supponiamo di voler creare una form per l’autenticazione per un’applicazione. Ecco il codice:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
public class Generic extends JPanel { /* * Etichette per la GUI */ protected final static String names[] = { "Username", "Password" }; /* * Componenti GUI */ protected JLabel labels[]; public JTextField fields[]; protected JButton button1; protected JPanel panelCenter, panelSouth; /* * Numero dei campi di testo della GUI */ public int size; /* * Costanti che rappresentano i campi di testo della GUI */ public static final int GENERIC1 = 0, GENERIC2 = 1; /* * Imposta la GUI. La dimensione dell'argomento del costruttore */ public Generic(int size) { this.size = size; labels = new JLabel[size]; fields = new JTextField[size]; /* * Crea etichette */ for (int count = 0; count < labels.length; count++) { labels[count] = new JLabel(names[count]); } /* * Crea campi di testo */ for (int count = 0; count < fields.length; count++) { fields[count] = new JTextField(); } /* * Crea il pannello CENTRALE */ panelCenter = new JPanel(); // altezza x larghezza panelCenter.setLayout(new GridLayout(size, 2)); /* * Attacca etichette e campi di testo a panelCenter */ for (int count = 0; count < size; count++) { panelCenter.add(labels[count]); panelCenter.add(fields[count]); } /* * Crea pulsante generico senza etichette e gestori di eventi */ button1 = new JButton(); /* * Crea il pannello SUD per disporre i pulsanti e li attacca */ panelSouth = new JPanel(); panelSouth.add(button1); /* * Imposta il layout del contenitore e attacca i pannelli */ setLayout(new BorderLayout()); add(panelCenter, BorderLayout.CENTER); add(panelSouth, BorderLayout.SOUTH); validate(); } public JButton getButton1() { return button1; } } |
Ora che abbiamo la nostra classe generica possiamo creare un’altra classe che permetterà la creazione della form specifica. Ecco il codice del file “LoginInterface.java”:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
public class LoginInterface extends JFrame { private Generic user; private JButton loginButton; /* * Imposta la GUI */ public LoginInterface() { super("Login Form"); /* * Aggiungo l'Interfaccia generica e la centro allo schermo * creando l'oggetto user e impostando i campi nella form a 2 */ user = new Generic(2); getContentPane().add(user, BorderLayout.CENTER); /* * Configuro il pulsante doTask1 */ loginButton = user.getButton1(); loginButton.setText("Login"); loginButton.setToolTipText("Avvia il login"); /* * Chiamata ad ActionListener */ loginButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { String username = ""; String password = ""; username = user.fields[0].getText(); password = user.fields[1].getText(); /* * Creo un oggetto di tipo Accesso * che mi permette di effettuare * la connessione all'applicazione * Il codice del file Accesso(non postato) * prende in input "username e password" ed * effettua una query sul db */ Accesso accesso = new Accesso(); accesso.autentica(username, password); } }); // Fine chiamata ad ActionListener per il primo bottone /* * Registra ascoltatore per chiusura finestra */ addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent event) { System.exit(1); } }); // Fine chiamata a WindowListener /* * Regolazioni Contenitore */ // Larghezza x Altezza setSize(240, 160); setVisible(true); setResizable(false); // Centro il contenitore allo schermo setLocation(500, 300); } public static void main(String[] args) { new LoginInterface(); } } |
Una risposta
[…] Creazione Form in Java Swing tramite classe generica […]