L interfaccia grafica in Java Java possiede due package per la creazione di interfacce grafiche java.awt javax.swing AWT (Abstract Widget Toolkit) presente già in Java 1.0, migliorato in Java 1.1. Invariato nelle versioni successive. più limitato nella varietà di componenti di interfaccia forniti componenti di interfaccia meno sofisticati (es. bottoni possono avere etichette solo testuali)
SWING Java Swing e' presente a partire da Java 1.2 (ma esiste estensione Swing a Java 1.1): maggiore varietà di componenti di interfaccia componenti più sofisticati (es. posso avere bottoni etichettati con testo e/o immagini) Swing components sono "lightweight" (più efficienti) aspetto riconfurabile (la stessa interfaccia può essere visualizzata con aspetto stile Windows o stile Motif ecc.) funzioni avanzate per grafica 2D Gli elementi hanno lo stesso nome che in AWT ma con l aggiunta di una J all inizio del nome (es: Frame e JFrame) Struttura di un interfaccia
Frame Finestra top-level (non contenuta all interno di un altra) in Java prende il nome di frame La libreria AWT ha una classe corrispondente denominata Frame. La versione SWING si chiama JFrame I frames sono esempi di contenitori Un contenitore è un componente speciale che può contenere altri componenti. I contenitori e i loro layout manager determinano in che modo i componenti devono essere organizzati e visualizzati Esempio AWT import java.awt.*; public class MioFrame extends Frame { MioFrame mio = new MioFrame(); mio.show();
Esempio SWING import javax.swing.*; public class MioFrame extends JFrame { MioFrame mio = new MioFrame(); mio.show(); Visualizzare informazioni in un frame In Java i frame sono studiati per fungere esclusivamente da contenitori di componenti Barre dei menu ed altri componenti I disegni vengono inglobati in un altro componente, chiamato pannello che viene aggiunto al Frame Il pannello di interesse per le GUI è il pannello del contenuto È in questo pannello che vengono inseriti tutti i componenti GUI
I Pannelli I pannelli sono realizzati dalla classe JPanel Vengono aggiunti al pannello del contenuto Sono elementi di GUI che godono di due utili proprietà: Hanno una superficie su cui è possibile disegnare Sono a loro volta dei contenitori; possono quindi a loro volta contenere componenti GUI quali pulsanti, barre di scorrimento, ecc. Esempio import javax.swing.*; public class MioFrame extends JFrame { Container contentpane = mio.getcontentpane(); JPanel pp = new JPanel(); JButton b = new JButton("START"); JButton b2 = new JButton("STOP"); pp.setlayout(new FlowLayout()); pp.add(b); pp.add(b2); contentpane.add(pp);
Gestione degli eventi grafici In Java tutte le azioni effettuate dall utente sull interfaccia grafica vengono detti eventi: Pressione di un pulsante Attivazione di un menu a barra Movimento del mouse sulla finestra ecc Per catturare gli eventi e necessario installare degli ascoltatori Gli ascoltatori sono definiti in Interfacce astratte che devono essere implementate ActionListener ascolta eventi tipo pressione di un pulsante ItemListener ascolta eventi su item (Es checkbox) MouseListener ascolta gli eventi del mouse WindowListener ascolta eventi su finestre (es. chiusura) import javax.swing.*; Esempio public class MioFrame extends JFrame implements WindowListener { MioFrame mio = new MioFrame(); mio.show(); mio.addwindowlistener(mio); public void windowclosing(windowevent e) { System.exit(0);