AbstractWindowToolkit

Gerarchia AWT

Classes:

  • BorderLayout
  • CardLayout
  • CheckboxGroup
  • Color
  • Component
    • Button
    • Canvas
    • Checkbox
    • Choice
    • Container
      • Panel
      • Window
        • Dialog
        • Frame
    • Label
    • List
    • Scrollbar
    • TextCompoment
      • TextArea
      • TextField
  • Dimension
  • Event
  • FileDialog
  • FlowLayout
  • Font
  • FontMetrics
  • Graphics
  • GridLayout
  • GridBagConstraints
  • GridBagLayout
  • Image
  • Insets
  • MediaTracker
  • MenuComponent
    • MenuBar
    • MenuItem
      • CheckboxMenuItem
      • Menu
  • 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
  1. Un contenitore La Finestra, il pannello, una finestra di dialogo: Container Frame
  2. il modo nel quale gli oggetti grafici vengono distribuiti all'interno della finestra: Layout
  3. 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):
  1. NORTH
  2. SOUTH
  3. WEST
  4. EST
  5. CENTER

Ecco un esempio in cui :
  1. il contenitore viene istanziato
  2. viene impostato il tipo di layout
  3. vengono generati gli oggetti da inserire nel Container
  4. vengono "aggiunti" gli oggetti generati
  5. 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
Topic revision: r1 - 22 Feb 2017, UnknownUser
This site is powered by FoswikiCreative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License1999-2025
Ideas, requests, problems regarding this site? Send feedback