分成兩個(gè)文件寫(xiě)
問(wèn)題:
第二個(gè)listenns文件中函數(shù)沒(méi)有被調(diào)用,原因是生成的界面上start按鈕和右上角的關(guān)閉按鈕點(diǎn)擊
無(wú)反應(yīng),請(qǐng)問(wèn)原因是什么
test文件
package?SecondJava;
import?java.awt.*;
import?java.awt.event.*;
public?class?test?extends?Frame?implements?ActionListener{
private?Button?start=new?Button("Start");
private?Button?show=new?Button("Show");
private?Button?close=new?Button("close");
private?TextField?display=new?TextField(25);
private?listens?count=new?listens(show,25);
private?class?WindowCloser?extends?WindowAdapter{
public?void?WindowClosing(WindowEvent?we){
System.exit(0);
}
}
public?test(){
super("CountDown?Tester");
setLayout(new?FlowLayout());
addWindowListener(new?WindowCloser());
add(start);
add(show);
add(display);
add(close);
close.addActionListener(this);
show.addActionListener(this);
start.addActionListener(this);
count.addActionListener(this);
pack();
setVisible(true);
}
public?void?actionPerformed(ActionEvent?e){
if(e.getSource()==start){
count.startCounting();
}
else?if(e.getSource()==show)display.setText("Event?came?from:"+e.getActionCommand());
else?if(e.getSource()==close)System.exit(0);
}
public?static?void?main(String?args[]){
test?c=new?test();
}
}
listens文件
package?SecondJava;
import?java.awt.*;
import?java.awt.event.*;
public?class?listens?{
ActionListener?listener=null;
Object?source=null;
int?maxCount=10;
public?listens(Object?_source,int?_maxCount){
maxCount=_maxCount;
source=_source;
}
public?void?addActionListener(ActionListener?newListener){
listener=AWTEventMulticaster.add(listener,?newListener);
}
public?void?removeActionListener(ActionListener?oldListener){
listener=AWTEventMulticaster.remove(listener,?oldListener);
}
public?void?startCounting(){
if(listener==null){
for(int?i=maxCount;i>=0;i--){
System.out.println("i:"+i);
System.out.println("Done.Generating?event?now...");
listener.actionPerformed(new?ActionEvent(source,ActionEvent.ACTION_PERFORMED,"CountDown"));
}
}
}
}