FONDAMENTI DI INFORMATICA L-B - APPELLO DEL 03/07/2003

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

La finestra contiene:

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))