E' data la classe Cellulare che implementa un telefono cellulare:
public class Cellulare { private String display; private boolean calling; public Cellulare() { display = ""; calling = false; } public String getDisplay() { return display; } public boolean isCalling() { return calling; } public void addDigit(int n) { display = display + n; } public void canc() { if (display.length() > 0) display = display.substring(0,display.length()-1); } public void call() { display = "Chiamata in corso"; calling = true; } public void hang() { display = ""; calling = false; } }
ESERCIZIO
L'esercizio consiste nella realizzazione di un'applicazione grafica (con Swing) che simula un telefono cellulare.
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,150,220); 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 Cellulare c; private JTextField display; private JButton inizio, fine, canc, cifre[]; public Swing1Panel() { ...
abilitaTasti(); } public void actionPerformed(ActionEvent e) { ...
abilitaTasti(); } public void abilitaTasti() { ... } }
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' obbigatorio utilizzare le variabili riportate nell'implementazione della classe Swing1Panel e cioè
private Cellulare c; private JTextField display; private JButton inizio, fine, canc, cifre[];
Attenzione: la creazione e la gestione dei tasti cifre deve essere realizzata utilizzando dei cicli for, sono considerate scorrette le soluzioni che creano e gestiscono i tasti delle cifre senza l'utilizzo di cicli
L'ultima istruzione del costruttore sarà l'invocazione del metodo abilitaTasti() che gestisce la,logica descritta nella terza parte dell'esercizio.
Parte 2 - Gestione tasti
Scrivere l'implementazione del metodo actionPerformed che fornisce la risposta all'evento di pressione dei vari bottoni in modo da realizzare la logica di funzionamento descritta qui di seguito:
Utilizzando un'istanza di Cellulare il comportamento della finestra è il seguente (tra parentesi vengono suggeriti i metodi della classe Cellulare da utilizzare per ogni operazione):
Ad ogni pressione di bottone il Display mostra il valore aggiornato utilizzando il metodo getDisplay() della classe cellulare
L'ultima istruzione del costruttore sarà l'invocazione del metodo abilitaTasti() che gestisce la,logica descritta nella terza parte dell'esercizio.
Attenzione: la gestione dei tasti cifre deve essere realizzata utilizzando dei cicli for, sono considerate scorrette le soluzioni che gestiscono i tasti delle cifre senza l'utilizzo di cicli
Parte 3 - Gestione abilitazione tasti
Scrivere l'implementazione del metodo abilitaTasti() che gestisce la
logica di disabilitazione dei tasti secondo regola riportate qui di seguito.
Si ricorda che l'abilitazione e la disabilitazione di un bottone si ottiene invocando il metodo setEnabled(true) (o setEnabled(false) ) della classe JButton.
Attenzione: la gestione dei tasti cifre deve essere realizzata utilizzando dei cicli for, sono considerate scorrette le soluzioni che gestiscono i tasti delle cifre senza l'utilizzo di cicli