Esercizio P9.16
ƒ Scrivere un’applicazione grafica che funga da interfaccia per la
classe BankAccount.
ƒ Fornite campi di testo e pulsanti per versare e prelevare denaro e
per visualizzare il saldo in un’area di testo
Esercizi
Anno Accademico 2003/04
Docente modulo 2: Barbara Masucci
Linguaggi di Programmazione II
2003-04
Barbara Masucci
File ExP9_16.java
import
import
import
import
import
import
import
import
import
public class ExP9_16
{
public static void main(String[] args)
{
final BankAccount account = new
BankAccount(INITIAL_BALANCE);
java.awt.event.ActionEvent;
java.awt.event.ActionListener;
javax.swing.JButton;
javax.swing.JFrame;
javax.swing.JLabel;
javax.swing.JPanel;
javax.swing.JScrollPane;
javax.swing.JTextArea;
javax.swing.JTextField;
// l’area di testo
final JTextArea textArea = new JTextArea(10, 30);
textArea.setEditable(false);
JScrollPane scrollPane = new JScrollPane(textArea);
// il frame
/**
Questo programma mostra un frame con un’area di
testo che visualizza il saldo di un conto corrente.
Un secondo frame contiene un campo di testo e
pulsanti per prelevare o depositare denaro
*/
Linguaggi di Programmazione II
2003-04
Barbara Masucci
2
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(scrollPane);
frame.pack();
frame.show();
3
// l’etichetta, il campo di testo e i pulsanti
Linguaggi di Programmazione II
2003-04
Barbara Masucci
4
ActionListener listener1 = new DepositListener();
depositButton.addActionListener(listener1);
JLabel amountLabel = new JLabel("Amount:");
class WithdrawListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
double withdrawAmount = Double.parseDouble(
amountField.getText());
final JTextField amountField = new JTextField(7);
JButton depositButton = new JButton("Deposit");
JButton withdrawButton = new JButton("Withdraw");
class DepositListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
double depositAmount = Double.parseDouble(
amountField.getText());
account.withdraw(withdrawAmount);
textArea.append(account.getBalance() + "\n");
amountField.setText("");
}
}
ActionListener listener2 = new WithdrawListener();
withdrawButton.addActionListener(listener2);
account.deposit(depositAmount);
textArea.append(account.getBalance() + "\n");
amountField.setText("");
}
}
Barbara Masucci
Linguaggi di Programmazione II
2003-04
5
Barbara Masucci
Linguaggi di Programmazione II
2003-04
6
1
Esercizio P9.17
// il pannello di controllo
JPanel controlPanel = new JPanel();
controlPanel.add(amountLabel);
controlPanel.add(amountField);
controlPanel.add(withdrawButton);
controlPanel.add(depositButton);
ƒ Scrivere un’applicazione grafica che funga da interfaccia per la
classe Purse.
ƒ Fornite pulsanti per aggiungere le varie monete e per visualizzare la
quantità totale di denaro presente nel borsellino.
ƒ Usate un unico metodo per i ricevitori di eventi dei vari pulsanti
// il frame
JFrame controlFrame = new JFrame();
controlFrame.setContentPane(controlPanel);
controlFrame.pack();
controlFrame.show();
}
private static final double INITIAL_BALANCE = 1000;
}
Linguaggi di Programmazione II
2003-04
Barbara Masucci
7
File ExP9_17.java
import
import
import
import
import
import
import
Coin(0.25,
Coin(0.10,
Coin(0.05,
Coin(0.01,
8
// il frame per l’area di testo
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(scrollPane);
frame.pack();
frame.show();
// il pannello
JPanel controlPanel = new JPanel();
main(String[] args)
new
new
new
new
Linguaggi di Programmazione II
2003-04
// l’area di testo
final JTextArea textArea = new JTextArea(10, 30);
textArea.setEditable(false);
JScrollPane scrollPane = new JScrollPane(textArea);
java.awt.event.ActionEvent;
java.awt.event.ActionListener;
javax.swing.JButton;
javax.swing.JFrame;
javax.swing.JPanel;
javax.swing.JScrollPane;
javax.swing.JTextArea;
public class ExP9_17
{
public static void
{
final Coin c1 =
final Coin c2 =
final Coin c3 =
final Coin c4 =
Barbara Masucci
"Quarter");
"Dime");
"Nickel");
"Penny");
controlPanel.add(makeButton("Add
controlPanel.add(makeButton("Add
controlPanel.add(makeButton("Add
controlPanel.add(makeButton("Add
Quarter", c1, p, textArea));
Dime", c2, p, textArea));
Nickel", c3, p, textArea));
Penny", c4, p, textArea));
final Purse p = new Purse();
Barbara Masucci
Linguaggi di Programmazione II
2003-04
9
Barbara Masucci
// il frame per il pannello
JFrame controlFrame = new JFrame();
controlFrame.setContentPane(controlPanel);
controlFrame.pack();
controlFrame.show();
}
Linguaggi di Programmazione II
2003-04
10
public static JButton makeButton(String label,
final Coin coin, final Purse purse, final JTextArea
textArea)
{
JButton button = new JButton(label);
class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
purse.add(coin);
textArea.append(purse.getTotal() + "\n");
}
}
/**
Crea un pulsante per aggiungere monete al borsellino
@param aLabel il nome del pulsante
@param aCoin un oggetto Coin contenente il valore e
il nome di una moneta
@param aPurse un oggetto Purse contenente monete in
un borsellino
@param aTextArea l’area in cui viene visualizzato
l’ammontare totale delle monete
@return button il pulsante da aggiungere al pannello
*/
ButtonListener listener = new ButtonListener();
button.addActionListener(listener);
return button;
}
}
Barbara Masucci
Linguaggi di Programmazione II
2003-04
11
Barbara Masucci
Linguaggi di Programmazione II
2003-04
12
2
File ExP11_1.java
Esercizio P11.1
import javax.swing.JFrame;
ƒ Scrivere un’applicazione grafica con tre pulsanti etichettati “Red”,
“Green”, “Blue”, che cambino in rosso, verde o blu il colore dello
sfondo di un pannello posto al centro di una finestra
// Testa ExP11_1Frame
public class ExP11_1
{
public static void main(String[] args)
{
JFrame appFrame = new ExP11_1Frame();
appFrame.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);
appFrame.setTitle("ExP11_1");
appFrame.show();
}
}
Barbara Masucci
Linguaggi di Programmazione II
2003-04
13
File ExP11_1Frame.java
import
import
import
import
import
import
import
import
Barbara Masucci
Linguaggi di Programmazione II
2003-04
14
public class ExP11_1Frame extends JFrame
{
// Costruisce il frame
public ExP11_1Frame()
{
colorPanel = new JPanel();
colorPanel.setPreferredSize(
new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
java.awt.Dimension;
java.awt.BorderLayout;
java.awt.Color;
java.awt.event.ActionListener;
java.awt.event.ActionEvent;
javax.swing.JButton;
javax.swing.JFrame;
javax.swing.JPanel;
getContentPane().add(
colorPanel, BorderLayout.CENTER);
/**
Questo frame contiene un pannello che mostra uno dei
tre colori scelti dall’utente
*/
createControlPanel();
pack();
}
Barbara Masucci
Linguaggi di Programmazione II
2003-04
15
JPanel southPanel = new JPanel();
southPanel.add(makeButton("Red", Color.red));
southPanel.add(makeButton("Green", Color.green));
southPanel.add(makeButton("Blue", Color.blue));
16
class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
colorPanel.setBackground(color);
}
}
getContentPane().add(
southPanel, BorderLayout.SOUTH);
}
Linguaggi di Programmazione II
2003-04
Linguaggi di Programmazione II
2003-04
/**
Crea un bottone per cambiare il colore del pannello
@param label l’etichetta del bottone
@param color il colore da settare
@return button il bottone per cambiare il colore del
pannello
*/
public JButton makeButton(String label, final Color
color)
{
JButton button = new JButton(label);
/**
Crea il pannello di controllo con i bottoni in basso
*/
private void createControlPanel()
{
Barbara Masucci
Barbara Masucci
17
Barbara Masucci
Linguaggi di Programmazione II
2003-04
18
3
Esercizio P11.4
ButtonListener listener = new ButtonListener();
button.addActionListener(listener);
return button;
}
ƒ Scrivere un’applicazione grafica con tre pulsanti radio etichettati
“Red”, “Green”, “Blue”, che cambino in rosso, verde o blu il colore
dello sfondo di un pannello posto al centro di una finestra
private JPanel colorPanel;
private static final int PANEL_WIDTH = 300;
private static final int PANEL_HEIGHT = 300;
}
Barbara Masucci
Linguaggi di Programmazione II
2003-04
19
File ExP11_4.java
import
import
import
import
import
import
import
import
import
// Testa ExP11_4Frame
public class ExP11_4
{
public static void main(String[] args)
{
JFrame appFrame = new ExP11_4Frame();
appFrame.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);
appFrame.setTitle("ExP11_4");
appFrame.show();
}
}
Linguaggi di Programmazione II
2003-04
Linguaggi di Programmazione II
2003-04
20
File ExP11_4Frame.java
import javax.swing.JFrame;
Barbara Masucci
Barbara Masucci
java.awt.Dimension;
java.awt.BorderLayout;
java.awt.Color;
java.awt.event.ActionListener;
java.awt.event.ActionEvent;
javax.swing.JFrame;
javax.swing.JPanel;
javax.swing.JRadioButton;
javax.swing.ButtonGroup;
/**
Questo frame contiene tre bottoni radio e un
pannello di controllo per cambiare il colore dello
sfondo
*/
21
public class ExP11_4Frame extends JFrame
{
/**
Costruisce il frame
*/
public ExP11_4Frame()
{
colorPanel = new JPanel();
colorPanel.setPreferredSize(
new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
Barbara Masucci
Linguaggi di Programmazione II
2003-04
22
/**
Crea il pannello di controllo
*/
public void createControlPanel()
{
JRadioButton redButton = makeButton("Red", Color.red);
JRadioButton greenButton = makeButton("Green",
Color.green);
JRadioButton blueButton = makeButton("Blue",
Color.blue);
ButtonGroup group = new ButtonGroup();
group.add(redButton);
group.add(greenButton);
group.add(blueButton);
getContentPane().add(
colorPanel, BorderLayout.CENTER);
createControlPanel();
pack();
}
Barbara Masucci
Linguaggi di Programmazione II
2003-04
23
Barbara Masucci
Linguaggi di Programmazione II
2003-04
24
4
/**
Crea un bottone radio per cambiare il colore del
pannello
@param label l’etichetta del bottone
@param color il colore da settare
@return button il bottone radio
*/
public JRadioButton makeButton(String label, final Color
color)
{
JRadioButton button = new JRadioButton(label);
JPanel southPanel = new JPanel();
southPanel.add(redButton);
southPanel.add(greenButton);
southPanel.add(blueButton);
getContentPane().add(
southPanel, BorderLayout.SOUTH);
redButton.setSelected(true);
colorPanel.setBackground(Color.red);
}
Barbara Masucci
Linguaggi di Programmazione II
2003-04
class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
colorPanel.setBackground(color);
}
}
Linguaggi di Programmazione II
25
Barbara Masucci
2003-04
26
Esercizio P11.5
ButtonListener listener = new ButtonListener();
button.addActionListener(listener);
return button;
ƒ Scrivere un’applicazione grafica con tre caselle di controllo
etichettate “Red”, “Green”, “Blue”, che cambino in rosso, verde o blu
il colore dello sfondo di un pannello posto al centro di una finestra.
ƒ L’applicazione può visualizzare otto combinazioni di colore
}
private JPanel colorPanel;
private static final int PANEL_WIDTH = 300;
private static final int PANEL_HEIGHT = 300;
Barbara Masucci
Linguaggi di Programmazione II
2003-04
27
File ExP11_5.java
import
import
import
import
import
import
import
import
// Testa ExP11_5Frame
public class ExP11_5
{
public static void main(String[] args)
{
JFrame appFrame = new ExP11_5Frame();
appFrame.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);
appFrame.setTitle("ExP11_5");
appFrame.show();
}
}
Linguaggi di Programmazione II
2003-04
Linguaggi di Programmazione II
2003-04
28
File ExP11_5Frame.java
import javax.swing.JFrame;
Barbara Masucci
Barbara Masucci
java.awt.Dimension;
java.awt.BorderLayout;
java.awt.Color;
java.awt.event.ActionListener;
java.awt.event.ActionEvent;
javax.swing.JCheckBox;
javax.swing.JFrame;
javax.swing.JPanel;
/**
Questo frame contiene tre caselle di controllo e un
pannello di controllo
*/
29
Barbara Masucci
Linguaggi di Programmazione II
2003-04
30
5
public class ExP11_5Frame extends JFrame
{
public ExP11_5Frame()
{
colorPanel = new JPanel();
colorPanel.setPreferredSize(
new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
public void createControlPanel()
{
redButton = new JCheckBox("Red");
greenButton = new JCheckBox("Green");
blueButton = new JCheckBox("Blue");
class ColorListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
setColor();
}
}
getContentPane().add(
colorPanel, BorderLayout.CENTER);
createControlPanel();
pack();
redButton.addActionListener(new ColorListener());
greenButton.addActionListener(new ColorListener());
blueButton.addActionListener(new ColorListener());
}
Barbara Masucci
Linguaggi di Programmazione II
2003-04
31
getContentPane().add(southPanel, BorderLayout.SOUTH);
setColor();
}
private
private
private
private
private
private
Linguaggi di Programmazione II
2003-04
Linguaggi di Programmazione II
2003-04
34
import javax.swing.JFrame;
ƒ Scrivere un’applicazione grafica con una casella combinata
contenente tre voci etichettate “Red”, “Green”, “Blue”, che cambino
in rosso, verde o blu il colore dello sfondo di un pannello posto al
centro di una finestra
Linguaggi di Programmazione II
2003-04
Barbara Masucci
File ExP11_6.java
Esercizio P11.6
Barbara Masucci
JPanel colorPanel;
JCheckBox redButton;
JCheckBox greenButton;
JCheckBox blueButton;
static final int PANEL_WIDTH = 300;
static final int PANEL_HEIGHT = 300;
}
33
32
public void setColor()
{
float red = 0;
float green = 0;
float blue = 0;
if (redButton.isSelected()) red = 1;
if (greenButton.isSelected()) green = 1;
if (blueButton.isSelected()) blue = 1;
Color c = new Color(red, green, blue);
colorPanel.setBackground(c);
}
JPanel southPanel = new JPanel();
southPanel.add(redButton);
southPanel.add(greenButton);
southPanel.add(blueButton);
Barbara Masucci
Linguaggi di Programmazione II
2003-04
Barbara Masucci
// Testa ExP11_6Frame
public class ExP11_6
{
public static void main(String[] args)
{
JFrame appFrame = new ExP11_6Frame();
appFrame.setDefaultCloseOperation(
JFrame.EXIT_ON_CLOSE);
appFrame.setTitle("ExP11_6");
appFrame.show();
}
}
35
Barbara Masucci
Linguaggi di Programmazione II
2003-04
36
6
File ExP11_6Frame.java
import
import
import
import
import
import
import
import
public class ExP11_6Frame extends JFrame
{
/**
Constructs the frame
*/
public ExP11_6Frame()
{
colorPanel = new JPanel();
colorPanel.setPreferredSize(
new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
java.awt.Dimension;
java.awt.BorderLayout;
java.awt.Color;
java.awt.event.ActionListener;
java.awt.event.ActionEvent;
javax.swing.JComboBox;
javax.swing.JFrame;
javax.swing.JPanel;
/**
Questo frame contiene una casella combinata e un
pannello di controllo per cambiare lo sfondo
*/
getContentPane().add(
colorPanel, BorderLayout.CENTER);
createControlPanel();
pack();
Barbara Masucci
Linguaggi di Programmazione II
2003-04
}
37
Barbara Masucci
public void createControlPanel()
{
colorCombo = new JComboBox();
colorCombo.addItem("Red");
colorCombo.addItem("Green");
colorCombo.addItem("Blue");
2003-04
38
colorCombo.addActionListener(new ColorListener());
JPanel southPanel = new JPanel();
southPanel.add(colorCombo);
class ColorListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
Color c = Color.black;
String color = (String)colorCombo.getSelectedItem();
if (color.equals("Red")) c = Color.red;
else if (color.equals("Green")) c = Color.green;
else if (color.equals("Blue")) c = Color.blue;
colorPanel.setBackground(c);
}
}
Linguaggi di Programmazione II
Barbara Masucci
Linguaggi di Programmazione II
2003-04
39
getContentPane().add(southPanel, BorderLayout.SOUTH);
}
private
private
private
private
JPanel colorPanel;
JComboBox colorCombo;
static final int PANEL_WIDTH = 300;
static final int PANEL_HEIGHT = 300;
}
Barbara Masucci
Linguaggi di Programmazione II
2003-04
40
7