事件监听
代码:
/*
事件监听:
1.Java事件处理机制
2.事件源、事件监听器概念及作用
3.如何在一个现有组建上注册监听器
*/
import java.awt.*;
import java.awt.event.*;
public class TestActionEvent{
public static void main(String args[]){
Frame f=new Frame("Test");//创建Frame窗体
Button b=new Button("Press me!");//创建Button按钮
Monitor bh=new Monitor();//创建检测
b.addActionListener(bh);//添加监听事件
f.add(b,BorderLayout.CENTER);//窗体添加事件
f.pack();//打包
f.setVisible(true);//显示
}
}
class Monitor implements ActionListener{
public void actionPerformed(ActionEvent e){
System.out.println("a button has been pressed");
}
}
效果,点击按钮,cmd窗口里面会打印 a button has been pressed的字样:
持有对方的引用
代码:
import java.awt.*;
import java.awt.event.*;
public class TFMath{
public static void main(String[] args){
new TFFrame().launchFrame();
}
}
class TFFrame extends Frame{
TextField num1,num2,num3;
public void launchFrame(){
num1=new TextField(10);
num2=new TextField(10);
num3=new TextField(15);
Label lblPlus=new Label("+");
Button btnEqual=new Button("=");
btnEqual.addActionListener(new MyMonitor(this));
setLayout(new FlowLayout());
add(num1);
add(lblPlus);
add(num2);
add(btnEqual);
add(num3);
pack();
setVisible(true);
}
}
class MyMonitor implements ActionListener{
//TextField num1,num2,num3;
/*
public void actionPerformed(ActionEvent e) {
this.num1=num1;
this.num2=num2;
this.num3=num3;
}
*/
TFFrame tf=null;
//持有对方的引用
public MyMonitor(TFFrame tf){
this.tf=tf;
}
public void actionPerformed(ActionEvent e){
int n1=Integer.parseInt(tf.num1.getText());
int n2=Integer.parseInt(tf.num2.getText());
tf.num3.setText("" + (n1+n2));
}
}
效果: