1 import java.awt.event.ActionEvent;
2 import java.awt.event.ActionListener;
3 import javax.swing.JButton;
4 import javax.swing.JFrame;
5 import javax.swing.JLabel;
6 import javax.swing.JPanel;
7 import javax.swing.JTextField;
8
9 public class InvestmentFrame extends JFrame
10 {
11 private JButton button;
12 private JLabel label;
13 private JPanel panel;
14 private BankAccount account;
15
16 private static final int FRAME_WIDTH = 400;
17 private static final int FRAME_HEIGHT = 100;
18
19 private static final double INTEREST_RATE = 10;
20 private static final double INITIAL_BALANCE = 1000;
21
22 public InvestmentFrame()
23 {
24 account = new BankAccount(INITIAL_BALANCE);
25
26 // Use instance variables for components
27 label = new JLabel("balance: " + account.getBalance());
28
29 // Use helper methods
30 createButton();
31 createPanel();
32
33 setSize(FRAME_WIDTH, FRAME_HEIGHT);
34 }
35
36 private void createButton()
37 {
38 button = new JButton("Add Interest");
39 ActionListener listener = new AddInterestListener();
40 button.addActionListener(listener);
41 }
42
43 private void createPanel()
44 {
45 panel = new JPanel();
46 panel.add(button);
47 panel.add(label);
48 add(panel);
49 }
50
51 class AddInterestListener implements ActionListener
52 {
53 public void actionPerformed(ActionEvent event)
54 {
55 double interest = account.getBalance() * INTEREST_RATE / 100;
56 account.deposit(interest);
57 label.setText("balance: " + account.getBalance());
58 }
59 }
60 }