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