110 likes | 250 Views
Gestione dei colori. La gestione dei colori in AWT consente di specificare un qualunque colore. Il sistema trova la migliore corrispondenza entro i limiti del dispositivo hardware automaticamente Le caratteristiche di un colore sono incapsulate nella classe
E N D
Gestione dei colori La gestione dei colori in AWT consente di specificare un qualunque colore. Il sistema trova la migliore corrispondenza entro i limiti del dispositivo hardware automaticamente Le caratteristiche di un colore sono incapsulate nella classe Color, che fornisce una gamma di metodi per creare e manipolare colori RGB e HSB Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 8
Gestione dei colori (esempio) import java.awt.*; public class Colori extends Frame { public void paint (Graphics g) { Color c1 = new Color (255, 100, 100); Color c2 = new Color (100, 255, 100); g.setColor(c1); g.drawLine(20, 15, 50, 70); g.setColor(c2); g.fillRect(40, 35, 50, 20); } } Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 8
Gestione dei font L’AWT supporta diversi tipi di caratteri (font). Le caratteristiche di un font sono incapsulate in Font, che fornisce una gamma di metodi per creare e manipolare fonts. Inoltre AWT definisce la Classe FontMetrics per gestire informazioni legate ad oggetti di tipo Font import java.awt.*; public class Scritte extends Frame { public void paint (Graphics g) { Font carat = new Font (“Times”, Font.BOLD, 12); g.setFont(carat); g.drawString(“Compare questa scritta”, 50, 70); } } Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 8
FontMetrics risultato didrawString(“Testo che appare”, 10, 20) ascendente Testo che appare altezza (10, 20) rigo di base discendente Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 8
FontMetrics import java.awt.*; public class ScritteCentrate extends Frame { public void paint (Graphics g) { dimension d = this.size( ); g.setColor(Color.white); g.fillRect(0, 0, d.width, d.height); g.setColor(Color.black); g.setFont(new Font(“Helvetica”, Font.bold, 18)); drawCenteredString(“Testo centrato”, d.width, d.height, g); } public void drawCenteredString(String s, int w, int h, Graphics g) { FontMetrics fm = g.getFontMetrics( ); int x = (w - fm.StringWidth(s))/2; int y = fm.getAscent( ) + (h - fm.getAscent( ) - fm.getDescent( ))/2; g.drawString(s, x, y); } } Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 8
Il sistema degli eventi Disegnare oggetti grafici all’interno di finestre è solo una parte della faccenda. Per realizzare un’interfaccia grafica interattiva è necessario gestire la comunicazione utente/applicazione In JAVA ogni azione dell’utente attraverso l’uso del mouse e della tastiera genera un evento, che è in effetti un oggetto che porta informazioni sul tipo di evento generato e che viene utilizzato dal codice scritto per gestire quel tipo di evento sorgente di un evento: l’oggetto che lo genera (es., bottoni, menù) listener di un evento: l’oggetto che risponde all’evento Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 8
Source e listener evento Sorgente di eventi Listener di eventi Produce eventi e li invia agli oggetti che si sono registrati nella sua lista di listener Si registra nella lista della sorgente di eventi cui è interessato, e riceve l’evento quando esso è generato Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 8
Esempio di gestione degli eventi import java.awt.*; import java.awt.event.*; class FrameEventi extends Frame implements ActionListener { private int clic; private Button bott; private Label lab; FrameEventi(String s) { super(s); clic = 0; bott = new Button(“Premere qui”); lab = new Label(“Inizio”); bott.addActionListener(this); add(bott); add(lab); } public void actionPerformed(ActionEvent a) { clic++; lab.setText(“ “ + clic); } } Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 8
Classi di eventi in java.awt.event • ActionEvent associati a bottoni, liste, menù, campi di testo • AdjustmentEvent associati a barre di scorrimento • ItemEvent associati a scelte in checkbox e liste • TextEvent associati a testi in campi di testo • ComponentEvent associati a spostamenti o dimensionamenti di • componenti • KeyEvent associati alla pressione o al rilascio di tasti • MouseEvent associati allo spostamento del mouse e al cliccare Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 8
Interfacce Listener Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 8
Esempio: rispondere ad eventi del mouse import java.awt.*; import java.awt.event.*; class FrameEventiMouse extends Frame implements MouseListener, MouseMotionListener { private int lastX, lastY; FrameEventiMouse( ) { this.addMouseListener(this); this.addMouseMotionListener(this); } public void mousePressed(MouseEvent e) { lastX = e.getX( ); lastY = e.getY( ); } public void mouseDragged(MouseEvent e) { Graphics g = this.getGraphics( ); int x = e.getX( ); int y = e.getY( ); g.drawLine(lastX, lastY, x, y); lastX =x; lastY = y; } } Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 8