AbstractWindowToolkit
Gerarchia AWT
Classes:
- BorderLayout
- CardLayout
- CheckboxGroup
- Color
- Component
- Button
- Canvas
- Checkbox
- Choice
- Container
- Label
- List
- Scrollbar
- TextCompoment
- Dimension
- Event
- FileDialog
- FlowLayout
- Font
- FontMetrics
- Graphics
- GridLayout
- GridBagConstraints
- GridBagLayout
- Image
- Insets
- MediaTracker
- MenuComponent
- Point
- Polygon
- Rectangle
- Toolkit
Interfaces
- LayoutManager
- MenuComponent
Introduzione
La libreria AWT \xE8 il primo livello di astrazione al di sopra delle classi standard di Java per la gestione di un'interfaccia Grafica.
Le componenti essenziali che definiscono un'interfaccia grafica sono
- Un contenitore La Finestra, il pannello, una finestra di dialogo: Container Frame
- il modo nel quale gli oggetti grafici vengono distribuiti all'interno della finestra: Layout
- la gestione degli eventi in quanto il modello di programmazione GUI \xE8 guidato dagli eventi ( event driven)
Container
Vengono definiti due tipi di "Container": il "Panel" ed il "Windows" che si presenta nelle due forme del "Frame" e della"Dialog"
Frame
L'oggetto
Frame
\xE8 una finestra (
Windows
) alla quale \xE8 stato associato un bordo ed un titolo ed \xE8 infatti una sottoclasse di
Window
.
In genere la
gestione degli eventi viene fatta al livello del
Contaiener
.
La definizione del Layout Manager usato dal conteniner viene fatta attraverso il metodo
setLayout
della classe container
Layout
Il
LayoutManager \xE8 uni'interfaccia che viene implementata per la comunicazione tra i Container ed i Layout . Il
Layout Manager \xE8 responsabile della disposizione dei
Componenti all'interno del
Contenitore . Nelle AWT ci sono i seguenti Layout:
Il
Layout \xE8 istanziato nella classe del
Container attraverso il metodo
setLayout
come nell'esempio:
Panel p = new Panel();
p.setLayout(new BorderLayout());
p.add(new Button("Okay"), BorderLayout.SOUTH);
setLayout
e
add
appartengono alla classe del
Container , in questo caso
Panel
, che richiede come argomento un Layout Manager di quelli elencati in precedenza.
Approfondimenti possono essere seguiti
QUI
BorderLayout
La classe
BorderLayout
\xE8 sottoclasse di AWT ed
implementa l'interfaccia
Layout
per comunicare con i
Container
la posizione delle varie componenti.
Le componenti vengono organizzate all'interno del container come nello schema seguente
+----------------------+
| |
| North |
| |
+----------------------+
| | | |
| West | Center | East |
| | | |
+----------------------+
| |
| South |
| |
+----------------------+
Il Posizionamento effettuato attraverso il metodo del container
add
come nell'esempio precedente:
p.add(new Button("Okay"), BorderLayout.SOUTH);
Il secondo argomento controlla dove aggiungere il componente. I valori principali sono (dettagli
QUI):
- NORTH
- SOUTH
- WEST
- EST
- CENTER
Ecco un esempio in cui :
- il contenitore viene istanziato
- viene impostato il tipo di layout
- vengono generati gli oggetti da inserire nel Container
- vengono "aggiunti" gli oggetti generati
- viene reso visibile il Container
//Generate the window.
DrawExample2 f = new DrawExample2();
//Define a title for the window.
f.setTitle("The first Java 2D program");
//Definition of the window size in pixels
f.setSize(550,550);
// Set the layout type
BorderLayout myBoard=new BorderLayout();
f.setLayout(myBoard);
//Set the Labels for each Layout regions
Label labelNorth=new Label("Intestazione");
Label labelSouth=new Label("Pie di Pagina");
Label labelEast=new Label("Bordo Destro");
Label labelWest=new Label("Bordo Sinistro");
// ADD THE LABEL TO THE LAYOUT
f.add(labelNorth, myBoard.NORTH);
f.add(labelSouth, myBoard.SOUTH);
f.add(labelEast, myBoard.EAST);
f.add(labelWest, myBoard.WEST);
//Show the window on the screen.
f.setVisible(true);
Nel caso si voglia includere un'immagine in in un "settore" del BorderLayout questo non pu\xF2 essere fatto direttamente in quanto il metodo
add
si aspetta degli oggetti
Component
per questo motivo \xE8 necessario dotare una Component di una immagine come descritto nella pagina
Double Buffering
Event
Men\xF9 Fine Pagina
--
RobertoBernetti - 07 Apr 2014