事件监听
代码:
/* 事件监听: 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)); } }
效果: