您的位置:首页 > 产品设计 > UI/UE

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

2015-12-15 23:42 573 查看
闲来无事,学学图形界面开发,没准什么时候自己写个东西,会有很实用的价值。

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

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

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);
}

});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息