E' data la classe Tombola che implementa il gioco della tombola
public class Tombola { private boolean estratti[]; private int eCount; public Tombola() { estratti = new boolean[90]; azzera(); } public void azzera() { for (int i=0; i<90; i++) estratti[i] = false; eCount = 0; } public int estrai() { boolean ok = false; int n = -1; while ((eCount<90) && (!ok)) { n = (int)Math.round(Math.random()*90); if (estratti[n]==false) { ok = true; estratti[n] = true; eCount++; } } return n+1; } }
ESERCIZIO
L'esercizio consiste nella realizzazione di un'applicazione grafica (con Swing) che simula il gioco della tombola.
La classe principale Swing1 è definita come segue:
import java.awt.*; import javax.swing.*; import java.awt.event.*;
public class Swing1 { public static void main(String[] args) { JFrame frame = new JFrame("Esempio 1"); Container c = frame.getContentPane(); Swing1Panel p = new Swing1Panel(); c.add(p); frame.setBounds(20,20,300,300); frame.show(); } }
La classe Swing1Panel è parzialmente definita come segue:
import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Swing1Panel extends JPanel implements ActionListener { private Tombola t; private JTextField display; private JTextField num[]; private JButton est, azz; public Swing1Panel() { ... } public void actionPerformed(ActionEvent e) { ... } public void accendi(int n) { ... } public void spegniTutto() { ... } }
Parte 1 - Creazione del pannello
Scrivere l'implementazione del costruttore di Swing1Panel in modo da creare una finestra come quella riportata qui di seguito
Attenzione:
E' obbligatorio utilizzare le variabili riportate nell'implementazione della classe Swing1Panel e cioè
private Tombola t; private JTextField display; private JTextField num[]; private JButton est, azz;
Parte 2 - Gestione evento
Scrivere l'implementazione del metodo actionPerformed che fornisce la risposta all'evento di pressione dei bottoni in modo da realizzare la logica di funzionamento descritta qui di seguito:
Parte 3 - Gestione accensione e spegnimento numeri
Scrivere l'implementazione del metodo accendi() che riceve come parametro un numero e accende il campo corrispondente facendolo diventare verde (setBackground(Color.green))
Scrivere l'implementazione del metodo spegniTutto() che spegne tutti i campi con i numeri facendoli diventare bianchi (setBackground(Color.white))