La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Grafica ed eventi Più movimento alle classi. 2 JComponent e Repaint Come chiedere il ridisegno di un componente? Ogni componente Swing ha il metodo.

Presentazioni simili


Presentazione sul tema: "1 Grafica ed eventi Più movimento alle classi. 2 JComponent e Repaint Come chiedere il ridisegno di un componente? Ogni componente Swing ha il metodo."— Transcript della presentazione:

1 1 Grafica ed eventi Più movimento alle classi

2 2 JComponent e Repaint Come chiedere il ridisegno di un componente? Ogni componente Swing ha il metodo repaint(): linvocazione di questo metodo schedula il ridisegno del componente quanto prima ESEMPIO: JPanel p=new JPanel(); p.add(…) … p.repaint(); Il repaint comporta la chiamata a metodo paintComponent(Graphics g) Utile nei quando si usano componenti per le animazioni

3 3 JFrame Come strutturare le classi che utilizzano le swing? quando si ha bisogno di un JFrame, creare una classe che estende JFrame e impostare nel costruttore tutte le istruzioni di inizializzazione Tutti i JComponent che devono essere accessibili vengono definiti come campi e inizializzati nel costruttore Esempio public class Myframe extends JFrame{ private JButton b; public Myframe(){ b=new JButton(pulsante); … } public void mioMetodo(){ b.setForeground(Color.RED); }

4 4 Listener Vengono invocati a seguito di un determinato evento Alcuni listener di interesse: ActionListener MouseListener MouseMotionListener MouseWheelListener I metodi dei listener vengono invocati in maniera automatica dal gestore di eventi Java

5 5 Listener e accesso alla classe Permettere al listener di accedere a campi e metodi della classe generale (in genere si estende JFrame ma per le animazioni a volte si usa JComponent) Definire i listener come classi interne della classe ESEMPIO: public class Myframe extends JFrame{ private JButton b; public Myframe(){ b=new JButton(pulsante); b.addActionListener(new MioListener()); } private class MioListener implements ActionListener{ public void actionPerformed(ActionEvent e){ b.setBackground(Color.GREEN); }

6 6 Listener e Adapter Adapter Di ogni tipo di listener esiste un Adapter Per ogni *Listener esiste *Adapter ad eccezione di quelli con zero o uno metodi. ESEMPIO: MouseAdapter MouseMotionListener MouseMotionAdapter MouseWheelListener MouseWheelAdapter

7 7 Registrazione dei Listener Come registrare un listener *Listener: ActionListener,MouseListener, MouseMotionListener … Per aggiungere un *Listener ad un oggetto c c.add*Listener(listener); Esempio: JButton b=new JButton(mio pulsante); ActionListener l=new … b.addActionListener(l); b.addMouseMotionListener(…)

8 8 Analisi degli eventi passo passo Individuare il componente principale Definire una classe che estende JFrame o JPanel Nel costruttore inizializzare i componenti grafici Utilizzare variabili di istanza per i componenti che devono essere acceduti in altri metodi della classe o nei listener Stabilire quali sono gli eventi che interessano e quindi i tipi di listener utilizzare Implementare linterfaccia del listener o estendere lAdapter come classe interna

9 9 Analisi degli eventi passo passo Definire in quali aree vengono generati gli eventi cioè a quali componenti agganciare i listener registrare i listener definiti ai componenti (da fare nel costruttore della classe generale) Definire le azioni da eseguire nei metodi dei Listener

10 10 Ricapitolando… 1. Definire una classe principale che estende JFrame o JPanel 2. Nel costruttore inizializzare componenti grafici e listener 3. Stabilire quali sono gli eventi e a in quali componenti 4. Implementare i listener e registrarli 5. Definire le azioni da eseguire nei metodi dei Listener

11 11 Esercizio n.1 Realizzare una applicazione che permette il trascinamento di una ellissi allinterno di un frame Click allinterno della ellissi per iniziare il trascinamento Movimento del mouse con pulsante per cliccato per spostare lellissi Visualizzazione della posizione x,y

12 12 Esercizio n.1 Osservazioni: Occorre differenziare il click iniziale dal trascinamento Capire quali eventi occorrono La pallina si deve muovere quando il click iniziale è stato fatto allinterno della stessa Come fare a capire se x,y appartengono ad un cerchio? Quando disegno la pallina in movimento devo fare attenzione al delta tra langolo a sinistra e il punto in cui è trascinata dal mouse

13 13 Esercizio n.2 Aggiungere al pannello precedente 2 pulsanti con le etichette Rosso e Verde La pressione del primo imposta il colore Rosso alla pallina, mentre il secondo usa il Verde Aggiungere una JSpinner che imposta laltezza della pallina in base al valore specificato

14 14 Esercizio n.3 per casa A partire dallesercizio originale, aggiungere una seconda pallina rossa che possa essere spostata in maniera indipendente dalla prima


Scaricare ppt "1 Grafica ed eventi Più movimento alle classi. 2 JComponent e Repaint Come chiedere il ridisegno di un componente? Ogni componente Swing ha il metodo."

Presentazioni simili


Annunci Google