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