帮看个JAVA 问题

来源:百度知道 编辑:UC知道 时间:2024/06/24 16:38:04
public class TestMyMonitor {
public static void main(String[] args) {
new TTFrame().launchFrame();
}
}

class TTFrame extends Frame {
TextField num1;TextField num2;TextField num3;
public void launchFrame() {
num1 = new TextField(10);
num2 = new TextField(10);
num3 = new TextField(15);
Button b1 = new Button("=");
Label l1 = new Label("+");
MyMonitor m = new MyMonitor(num1,num2,num3);
b1.addActionListener(m);
setLayout(new FlowLayout());
add(num1);
add(l1);
add(num2);
add(b1);
add(num3);
pack();
setVisible(true);
}
}

class MyMonitor implements ActionListener {

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

public void actionPe

你这个程序的意思是在文本框Textfield中输入数字后然后计算值。
你的监听器是设在b1这个Button上的,所以只对Button起作用。
总之一个原则就是在哪个component上加监听器,就只对哪个component进行监听。

不能,
b1.addActionListener(m),只监听按钮b1,只有按下b1才会得到各文本的值,并相加,赋给num3.

不会;
分析如下:

b1.addActionListener(m); //只是对按钮的点击动作监听

//按下后,会调用MyMonitor(即m对象)的actionPerformed方法;
//而num1,num2,num3只是在构造m对象时,被m对象应用为成员变量;
//所以在actionPerformed中可以使用num1,num2,num3 3个变量