RELAZIONE 5
ANCARANI SILVIA
DESCRIZIONE DEL PROBLEMA
Si vuole impostare una finestra che sia centrata nello schermo, che abbia dimensioni
fisse e che possa essere chiusa con un opportuno comando legato ad un bottone che
chiamerò “QUIT”.
Al centro della finestra viene inserita una croce di dimensioni 10*10 che può essere
spostata, all’interno della finestra, premendo degli opportuni bottoni che ne
consentano il movimento verso l’alto, il basso, destra e sinistra.
ANALISI DEL PROBLEMA
La classe PanelSuper è una sottoclasse di Jpanel, e sono entrambe delle
implementazioni delle interfacce ActionListener e WindowListener.
Occorre quindi importare java.awt.* ; javax.swing.*; java.awt.event.* che sono i
package necessari per realizzare delle applicazioni grafiche.
PanelSuper introduce dei metodi che utilizza e che possono modificare quelli già
esistenti nella classe base Jpanel; viene utilizzato per realizzare un pannello che poi
verrà personalizzato con gli opportuni comandi.
Innanzitutto creo un pannello a partire dalla classe base Jpanel e lo suddivido in
“sottopannelli”, ossia lo suddivido in parte “est”, “sud”, “ovest”, “nord” e “center” e
le gestisco in modo autonomo.
Nella parte sud del pannello inserisco i bottoni di funzionamento:
- allineati a sinistra metto i tasti “up”, “down”, “left” e “right”;
- allineato a destra metto il tasto “quit” che serve per la chiusura della finestra.
Per realizzare la finestra ho utilizzato i metodi di drawLine, in modo da creare i bordi
del pannello e delimitare i bottoni, e paintComponent.
Nella sottoclasse PanelSuper utilizzo il costruttore invocandolo con “super( )” e ne
definisco, oltre alle dimensioni, anche i colori.
La selezione del colore viene effettuata utilizzando il metodo della classe Graphics
che deve essere richiamato sull’oggetto Graphics che rappresenta l’area su cui si
voile definire il colore di sfondo.
Creo poi i bottoni a partire dal metodo JButton appartenente alla classe Jpanel e li
posiziono nella parte sud del pannello.
Bisogna quindi assegnare ad ogni bottone la funzione che deve eseguire quando viene
premuto ed utilizzo le interfacce ActionListener e WindowListener appartenenti al
package Swing.
In java un evento è un oggetto ed appartiene al package “java.awt.event” di cui fa
parte ActionEvent.
La logica vuole che ogni componente venga associato ad un ascoltatore di eventi (un
oggetto che implementa l’opportuna interfaccia Listener).
La gestione degli eventi viene effettuata dall’ascoltatore che nel nostro caso è un
pannello totale (PanelSuper) ossia ingloba tutti i sottopannelli.
Quando si preme un bottone si genera un evento di classe ActionEvent che viene
inviato dal sistema all’ascoltatore degli eventi di classe ActionLestener e se è il
pannello stesso su cui sto lavorando, basterà usare “this” per indicarlo. L’ascoltatore
degli eventi deve implementare il metodo e quindi si ha:
void actionPerformed (ActionEvent ev).
E’ importante dare come parametro nel costruttore dell’ascoltatore , la Jlabel su cui
dovrà agire.
Per quanto riguarda gli eventi di finestra sono gestiti dai metodi dichiarati
nell’interfaccia WindowListener.
Per chiudere l’applicazione quando viene chiusa la finestra del frame, occorre che il
frame implementi l’interfaccia WindowListener in modo da invocare il System.exit.
PROGETTO
Per creare la classe PanelSuper parto dalla classe base Jpanel ed utilizzo i suoi metodi
per ereditarietà.
La classe base appartiene al package fornito: javax.Swing.*
IMPLEMENTAZIONE: MyFrame.java PanelSuper.java EsempioSwing.java
Codice e documentazione relativi alle classi.
Prima di tutto è necessario importare all’inizio del codice import.java.awt.*;
import.javax.Swing.*; e import.java.awt.event.*
Ora posso creare PanelSuper con lo stesso costruttore della classe base.
Creo poi il componente SW EsempioSwing.java nel quale verifico il funzionamento
del pannello che ho creato con i relativi bottoni.
CASI D’USO
Codice e documentazione relativi al file EsempioSwing.java
(Vedi figura sotto)
NOZIONI ACQUISITE
Con questo progetto ho imparato ed utilizzato le applicazioni grafiche in java
continuando a sfruttare l’ereditarietà fra classi e l’implementazione delle interfacce.
Ho quindi imparato ad impostare una finestra e a gestirne gli eventi ed i layout.