CREARE UN INTERFACCIA UTENTE


 


AWT

Con eccezione dei menu ogni componente della GUI (graphical user interface) e’ implementato con una sottoclasse della classe awt (Abstract Windows Toolkit) Component

- Controlli base = bottoni, checkbox, choice, list, menuItem, textfield

- Altri controlli di input = scrollbar, textarea

- Componenti personalizzati = tramite la classe Canvas

- Linea di testo non editabile = labels

- container = l’awt fornisce 2 tipi di containers, entrambi implementati come sottoclasse della classe container (che a sua volta e’ una sottoclasse della component)

1) Windows = Dialog, FileDialog, frame

2) Panel = i panel sono raggruppabili da un oggetto frame che presenta la finestra in cui sono visualizzati

Altree classi dell’awt package:

Dimension = fornisce diverse classi per rappresentare dimensioni e forme

Color = usata per rappresentare e manipolare colori

Image = usata per visualizzare immagini (gif o jpeg)

Graphic = usata per rappresentare un contesto grafico

Event = usata per gestire le azioni del cliente

 

 

Usare i componenti awt

Ogni componente (eccetto una finestra) per essere visualizzato sullo schermo deve essere prima aggiunto (add) a un oggetto contenitore (container). Questo container e’ a sua volta un componente e puo’ essere aggiunto ad un altro container

La classe container definisce 3 metodi per aggiungere componenti

1 - argomento add() - richiede semplicemente di specificare il componente da aggiungere

2 - argomenti add() - come il primo piu’ un intero che indica la posizione nella lista (-1=ultimo)

3 - argomenti add() - specifica l’oggetto che deve essere aggiunto anteceduto dalla sua posizione scelta tra: north / south / fast / west / center.

Tutti i componenti ad eccezzione dei menu’ sono implementati come sottoclassi della classe Component, ed ereditano quindi le seguenti funzionalita’:

- Supporto di disegno base: paint() / update() / repaint(), che abilitano i componenti a disegnare se stessi

- Cattura degli eventi in generale tramite handleEvent(), e tramite il gruppo di metodi action()

 

Font

- Colori: setForeground() / getForeground() / setBackground() / getBackground()

 

Gestione delle immagini

- Controllo delle dimensioni e posizione: layoutManger / preferredSize(), minimumSize()

 

 

 

Componenti grafici:

Costruttore: init() Metodi utili:
Button b1; b1 = new Button("testo");  
TextField t; t = new TextFiled("testo");  
TextArea t1; t1 = new TextArea("testo",1,30);  
Label l; l = new Label("testo");  
Checkbox cb; cb = new Checkbox("testo"); setCheckboxGroup
Choice c; c = new Choice(); c.addItem(…);
List lst; lst = new list(6, true); lst.addItem(…);

Generalmente e’ consigliabile definire gli oggetti nel costruttore, e inizializzarli ( piu’ aggiungerli a video) nell’init()

Esempio:
import java.applet.*;
import java.awt.*;
public class NomeClasse extends Applet {
Button b;
public void init() {
b = new Button("testoButton");
//b.addActionListener( new BL());
add(b);
}
}

 

 

Usare il layout manager

Per organizzare i vari componenti java mette a disposizione vari layout.

Ogni Container per default ha un Layout Manger che si occupa di gestire i componenti in un contenitore (window, Panel, Frame, etc)

Per creare un layoutManager e assegnarlo ad un container:

aContainer.setLayout(new CardLayout);

oppure:

public void init() {

setLayout(new FlowLayout());

 

Metodi disponibili per i contenitori:

add() / remove() / removeAll() / layout() / preferredSize() / minimumSize().

layout() = dice al contenitore di riposizionare se stesso e i componenti che contiene

Esempio BorderLayout:
//: BLayout.java
import java.awt.*;
import java.applet.Applet;
public class BLayout extends Applet{
public void init() {
setLayout(new BorderLayout());
add("North", new Button("Button 1"));
add("South", new Button("B2"));
add("Center", new Button("Button di esempio"));
add("East", new Button("Button3"));
add("West", new Button("Button 4"));
}
}

 

Esempio GridLayout:
//: GLayout.java
import java.awt.*;
import java.applet.Applet;
public class GLayout extends Applet{
public void init() {
setLayout(new GridLayout(3,2));
add(new Button("Button 1"));
add(new Button("B2"));
add(new Button("Button di esempio"));
add(new Button("Button3"));
add(new Button("Button 4"));
}
}

 

Esempio FlowLayout:
//: FLayout.java
import java.awt.*;
import java.applet.Applet;
public class FLayout extends Applet{
public void init() {
setLayout(new FlowLayout());
add(new Button("Button 1"));
add(new Button("B2"));
add(new Button("Button di esempio"));
add(new Button("Button3"));
add(new Button("Button 4"));
}
}

 

 

 

Lavorare con la grafica - repaint()

Il sistema di disegno dell’awt controlla quando e quanto i programmi possono disegnare.

In risposta al metodo repaint() di un componente, l’awt invoca il metodo (del componente) update() per richiedere che il componente ridisegni se stesso. Il metodo update() per default invoca il metodo paint().

Coordinate: sono rappresentate da numeri interi che vanno da (0,0) in alto a sinistra a (width-1,height-1), dove ogni unita’ rappresenta la dimensione in pixel.

Seguono le 4 forme del metodo repaint():

  1. public void repaint() - la piu’ usata
  2. public void repaint(long time) - chiama il metodo update() dopo "time" millisecondi
  3. public void repaint(int x, int y, int width, int height) - Ridisegna solo la specifica parte del componente
  4. public void repaint(long time, int x, int y, int width, int height)

 

 

 

Forme

La classe graphic definisce metodi per disegnare i seguenti tipi di forme

linee: drawLine()

rettangoli: drawRect(), fillRect(), clearRect().

rettangoli 3D: draw3DRect(), fill3DRect()

rettangoli stondati: drawRoundRect(), fillRoundRect()

ellissi: drawOval(), fillOval()

archi: drawArc(), fillArc()

poligoni: drawPoligon(), fillPoligon()

Esempio:
//: Forme.java
import java.awt.*;
public class Forme extends Frame {
public void paint(Graphics g) {
g.drawLine(0,25,40,50);
g.drawRect(50,0,50,50);
g.drawOval(100,25,100,25);
g.fillRect(200,10,50,50);
g.fillRoundRect(0,60,50,50,20,20);
g.fillOval(100,80,80,50);
}
public static void main(String args[]) {
Forme f = new Forme();
f.setTitle("Forme");
f.resize(250,150);
f.show();
}
}

 

1