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  /**
 10     This program displays the growth of an investment. 
 11  */
 12  public class InvestmentViewer2
 13  {  
 14     private static final int FRAME_WIDTH = 400;
 15     private static final int FRAME_HEIGHT = 100;
 16  
 17     private static final double INTEREST_RATE = 10;
 18     private static final double INITIAL_BALANCE = 1000;
 19  
 20     public static void main(String[] args)
 21     {  
 22        JFrame frame = new JFrame();
 23  
 24        // The button to trigger the calculation
 25        JButton button = new JButton("Add Interest");
 26  
 27        // The application adds interest to this bank account
 28        final BankAccount account = new BankAccount(INITIAL_BALANCE);
 29  
 30        // The label for displaying the results
 31        final JLabel label = new JLabel("balance: " + account.getBalance());
 32  
 33        // The panel that holds the user interface components
 34        JPanel panel = new JPanel();
 35        panel.add(button);
 36        panel.add(label);      
 37        frame.add(panel);
 38    
 39        class AddInterestListener implements ActionListener
 40        {
 41           public void actionPerformed(ActionEvent event)
 42           {
 43              double interest = account.getBalance() * INTEREST_RATE / 100;
 44              account.deposit(interest);
 45              label.setText("balance: " + account.getBalance());
 46           }            
 47        }
 48  
 49        ActionListener listener = new AddInterestListener();
 50        button.addActionListener(listener);
 51  
 52        frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
 53        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 54        frame.setVisible(true);
 55     }
 56  }