您的位置:首页 > 编程语言 > Java开发

java中GUI实现两个文本框内容相加并触发等于按钮得到相加结果

2018-04-16 17:06 411 查看
import java.awt.*;
import java.awt.event.*;

public class TestMath {
public static void main(String args[]) {
new MyFrame().launchMyFrame();     //调用launchMyFrame方法
}
}

class MyFrame extends Frame {
TextField num1,num2,num3;         //先声明,后初始化。先声明为成员变量,可以被访问
public void launchMyFrame() {
num1 = new TextField(10);       //若在此声明和初始化,则为局部变量,不可被其他对象访问
num2 = new TextField(10);       //加上数字10表示设置文本框宽度(10个字符宽)
num3 = new TextField(15);       //num3文本框来放最后的和(所以大一点)
Label lb = new Label("+");      //加号是静态的文本,所以用Label
Button b = new Button("=");     //等于按钮,可以触发事件(求和事件)
b.addActionListener(new myMonitor(this));  //给按钮b加上监听器

setLayout(new FlowLayout());   //Panel类的布局管理器
add(num1);                     //将文本框加到框架(窗体)中
add(lb);
add(num2);                     //这几个加入窗体中,是有顺序之分(按照实际要实现排列)
add(b);
add(num3);
pack();                        //设置窗体大小(刚好包住所有输入框的大小)
setVisible(true);              //设置窗体可见
}

//方法3:使用内部类(可以实现一个类访问其他类的成员变量)
/*
class myMonitor implements ActionListener {     //事件监听器(点击按钮,触发的事件)
public void actionPerformed(ActionEvent e) {     //事件监听器都需要重写里面的方法
int n1 = Integer.parseInt(num1.getText()); //int类型强制转化(获取num1文本框输入的内容)
int n2 = Integer.parseInt(num2.getText());
num3.setText("" + (n1+n2));                //设置num3文本框的内容(""表示强制转化字符串)
}
}

但是上面的添加监听事件代码,需要稍作改动:
b.addActionListener(new myMonitor());  //给按钮b加上监听器
*/

}

class myMonitor implements ActionListener {     //事件监听器(点击按钮,触发的事件)
MyFrame tf = null;                          //一个类不能直接访问其他类成员变量

public myMonitor(MyFrame tf) {         //在该对象中持有对方的引用(整个类的引用)
this.tf = tf;
}

/*这一段等效上面持有对方的引用(实现了一个类访问另一个类中的成员变量)
TextField num1,num2,num3;                                            //将对方的成员变量传给自己的方法中

public myMonitor(TextField num1,TextField num2,TextField num3) {
this.num1 = num1;
this.num2 = num2;
this.num3 = num3;
}

public void actionPerformed(ActionEvent e) {
int n1 = Integer.parseInt(num1.getText());
int n2 = Integer.parseInt(num2.getText());
num3.setText("" + (n1+n2));
}

但是上面的添加监听事件代码,需要稍作改动:
b.addActionListener(new myMonitor(num1,num2,num3));  //给按钮b加上监听器
*/

public void actionPerformed(ActionEvent e) {     //事件监听器都需要重写里面的方法
int n1 = Integer.parseInt(tf.num1.getText()); //int类型强制转化(获取num1文本框输入的内容)
int n2 = Integer.parseInt(tf.num2.getText());
tf.num3.setText("" + (n1+n2));                //设置num3文本框的内容(""表示强制转化字符串)
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐