事件监听、持有对方的引用--【J2SE】

事件监听

代码:

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

效果:

原文地址:https://www.cnblogs.com/wangmei/p/4827336.html