Java SE 6 Programmazione grafica (1) [email protected] [email protected] Programmazione Grafica java.awt -> Abstrast Window Toolkit ● Libreria di classi per la programmazione GUI. ● Componenti appaiono e si comportano diversamente su diverse piattaforme. ● Ma... generalizzando non si producono graficamente buoni risultati. Dal 1996 comincia la costruizione di una libreria di classi per ottimizzare la programmazione GUI. Nascita di quello che sarà la libreria SWING javax.swing Tutti i componenti della libreria swing cominciano con una J: Classe JFrame (1) Package javax.swing java.lang.Object > java.awt.Component > java.awt.Container > java.awt.Window > java.awt.Frame > javax.swing.JFrame ● Finestra di livello massimo (non contenuta in altre finestre) ● Pulsanti, barra e icone disegnate dal sistema operativo ● Sono dei contenitori, possono contenere altri oggetti (pulsanti, caselle di testo, etc.) Alcuni costruttori: ● JFrame( ) ● JFrame(String titoloDellaFinestra) Dichiarazione di un oggetto JFrame: ● JFrame f = new JFrame( ); ● JFrame f = new JFrame("Titolo della finestra") Classe JFrame (2) Alcuni metodi: ● setTitle(String title) ● setSize(int larghezza, int altezza) ● setLocation(int x, int y) ● setVisible(boolean visibilità) // sostituisce show( ) ● setDefaultCloseOperation(int operazione) operazione è una costante della classe di JFrame: EXIT_ON_CLOSE -> uscita standard di sistema DO_NOTHING_ON_CLOSE -> non fa nulla (Gestione!) HIDE_ON_CLOSE -> nascondi finestra (Gestione!) DISPOSE_ON_CLOSE -> chiudi e gestisci (Gestione!) Classe JFrame (3) Esempio creazione di una finestra: JFrame f=new JFrame( ); f.setSize(400,300); f.setLocation(100,100); f.setTitle("Prova"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); Esercizio S01 Creazione di una finestra Realizzare un programma che crei una finestra di dimensione 400 x 300 posizionata a 200, 200 con il titolo "Primo esercizio con le Swing". Nome progetto S01Finestra Classe JFrame (4) Normalmente la procedura utilizzata è quella di estendere la classe JFrame per personalizzarla facendo degli override dei metodi. Esempio: class MiaFinestra extends JFrame{ public MiaFinestra(){ setSize(300,200); ... ... } ... } Dichiarazione: MiaFinestra f = new MiaFinestra(); Esercizio S02 Creazione di una finestra Modificare il programma S01 creando una classe MiaFinestra estendendo la classe JFrame Nome progetto S02FinestraExtended Classe Toolkit (1) Classe statica che raccoglie numerosi metodi che si interfacciano con il sistema di gestione nativo. Dimensioni dello schermo: Toolkit kit = Toolkit.getDefaultToolkit(); Dimension schermo = kit.getScreenSize(); int larg = schermo.width; int lung = schermo.height; o int larg = (int) schermo.getWidth(); int lung = (int) schermo.getHeight(); Classe Toolkit (2) Caricamento di una immagine: Toolkit kit = Toolkit.getDefaultToolkit(); Image img= kit.getImage("icon.gif"); setIconImage(img); Normalmente è comodo raggruppare le immagini in una cartella dentro il progetto. Si crea una cartella di nome img. In questo caso bisogna tener conto del percorso relativo: Image img= kit.getImage("img/icon.gif"); setIconImage(img); Esercizio S03 Creazione di una finestra centrata con un icona. Realizzare un programma che crei una finestra centrata automaticamente sullo schermo. La finestra si chiamerà "Finestra centrata" e dovrà essere di dimensioni 300 x 200 e avere una icona personalizzata. Nome progetto S03FinestraCentrata Aggiunta: Modificare il programma in maniera da creare un metodo che centri la finestra