//poor vertion
//use BankAccount to implement interface ActionListener
//----------------------------------------------------
import java.awt.event.*;
import java.text.*;
import javax.swing.*;
public class InnerClassTest2
{
public static void main(String[] args)
{
BankAccount account=new BankAccount(10000);
account.start(10);
JOptionPane.showMessageDialog(null,"Quit program?");
System.exit(0);
}
}
class BankAccount implements ActionListener
{
public BankAccount(double initialBalance)
{
balance=initialBalance;
}
//private consturctor
private BankAccount(double initialBalance,double initialRate)
{
balance=initialBalance;
rate=initialRate;
}
public void start(double rate)
{
this.rate=rate;
ActionListener adder=new BankAccount(this.balance,this.rate); //inner class InterestAdder
Timer t=new Timer(1000,adder);
t.start();
}
private double balance;
private double rate;
public void actionPerformed(ActionEvent event)
{
double interest=balance*rate/100;
balance+=interest;
NumberFormat formatter=NumberFormat.getCurrencyInstance();
System.out.println("balance="+formatter.format(balance));
}
}
效果上完全相同,但沒有可讀性