GUI 简单加法计算器模拟 监听事件获取其他域的属性值 窗口关闭的监听事件

闲来无事,学学图形界面开发,没准什么时候自己写个东西,会有很实用的价值。

一直没想明白,当点击按钮的时候,怎么获取其他如文本框的属性值??

今天看了马士兵老师的视频,通过一种门面模式的方法,将所需要获取的类添加到自己的成员变量里来,如将文本框的所属的类注入到按钮监听类的属性中,就可以轻松获取该类中所有的公共属性了。


package com.gui._02actionlistener;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
 * 加法计算器简单实现
 * 1.获取其他域的值
 * 2.窗口关闭事件
 * @author Administrator
 *
 */
public class TextField_NumAdd {

	public static void main(String[] args) {
		new TFFrame_2Num().buildFrame();
	}

}

/**
 * 创建窗口
 * @author Administrator
 *
 */
class TFFrame_2Num extends Frame{
	//定义3个成员变量
	TextField num1,num2,result;
	public void buildFrame(){
		num1 = new TextField(10);
		num2 = new TextField(10);
		result = new TextField(15);
		
		Label labelAdd = new Label(" + ");
		Button btnEq = new Button(" = ");
		//添加点击事件
		btnEq.addActionListener(new AddActionListener(this));
		
		setTitle("two nums add");
		setLayout(new FlowLayout());
		
		//窗口关闭事件
		this.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
			
		});
		
		//xx + xx = xx
		add(num1);
		add(labelAdd);
		add(num2);
		add(btnEq);
		add(result);
		pack();
		setVisible(true);
		setLocationRelativeTo(null);
	}
	
	
}

class AddActionListener implements ActionListener{
	//定义Frame成员变量,为了获取Frame的属性值
	TFFrame_2Num tf;
	public AddActionListener(TFFrame_2Num tf){
		this.tf = tf;
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		int n1 = Integer.parseInt(tf.num1.getText());
		int n2 = Integer.parseInt(tf.num2.getText());
		tf.result.setText((n1+n2)+ "");
	}
	
}



窗口关闭事件的话,如果实现了Frame类,重写Frame的addWindowListener()方法,参数是new一个new WindowAdapter(),然后再实现new WindowAdapter()的windowClosing的方法,添加System.exit(0);就可以了。

<span>		</span>//窗口关闭事件
<span>		</span>Frame f = new Frame();
		f.addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
			
		});


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值