Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 81 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 82 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 83 Gestione dei font LAWT 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 84 FontMetrics Testo che appare (10, 20) ascendente discendente rigo di base altezza risultato di drawString(Testo che appare, 10, 20)
Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 85 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 86 Il sistema degli eventi Disegnare oggetti grafici allinterno di finestre è solo una parte della faccenda. Per realizzare uninterfaccia grafica interattiva è necessario gestire la comunicazione utente/applicazione In JAVA ogni azione dellutente attraverso luso 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: loggetto che lo genera (es., bottoni, menù) listener di un evento: loggetto che risponde allevento
Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 87 Source e listener 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 levento quando esso è generato evento
Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 88 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 89 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 810 Interfacce Listener
Progettazione dei Sistemi Interattivi (a.a. 2004/05) - Lezione 811 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; }