当前位置: 代码迷 >> J2SE >> 有个小有关问题请教
  详细解决方案

有个小有关问题请教

热度:349   发布时间:2016-04-24 18:05:33.0
有个小问题请教
Java code
import java.awt.*;import java.awt.event.*;public class Test {    public static void main(String[] args) {        MFrame f=new MFrame("事件监听",100,100);        Monitor m=new Monitor();        Button b1=new Button("start");        Button b2=new Button("stop");        b1.addActionListener(m);        b2.addActionListener(m);        //b1.setActionCommand("f");        //b2.setActionCommand("q");        f.add(b1);        f.add(b2);    }}class MFrame extends Frame{    public MFrame(String title,int width,int height){        setLayout(new FlowLayout());        setTitle(title);        setSize(width,height);        setLocation(100,100);        setVisible(true);    }}class Monitor implements ActionListener{    public void actionPerformed(ActionEvent e) {        //System.out.println("game will "+e.getActionCommand());        Button b=(Button)e.getSource();********        if(b==b1)System.out.println("wo");        else System.out.println("ni");            }    }

*******行出错,错在哪里?先谢谢各位了

------解决方案--------------------
if(b.getLabel().equals(b1.getLabel())
------解决方案--------------------
你的b1是局部变量,在monitor里面访问不到

------解决方案--------------------
你是在一个文件里定义了三个CLASS,这和你在三个文件里定义三个CLASS类似,Monitor这个类不可以直接引用Test里面的变量,你可以将二个BUTTON作为变量传入,代码如下
import java.awt.*;
import java.awt.event.*;

public class Test {
public static void main(String[] args) {
MFrame f=new MFrame("事件监听",100,100);
Button b1=new Button("start");
Button b2=new Button("stop");
Monitor m=new Monitor(b1,b2);
b1.addActionListener(m);
b2.addActionListener(m);
//b1.setActionCommand("f");
//b2.setActionCommand("q");
f.add(b1);
f.add(b2);
}
}

class MFrame extends Frame{
public MFrame(String title,int width,int height){
setLayout(new FlowLayout());
setTitle(title);
setSize(width,height);
setLocation(100,100);
setVisible(true);
}
}
class Monitor implements ActionListener{
Button b1=null;
Button b2=null;
public Monitor(Button b1,Button b2){
this.b1=b1;
this.b2=b2;
}
public void actionPerformed(ActionEvent e) {
//System.out.println("game will "+e.getActionCommand());
Button b=(Button)e.getSource();
if(b==b1)System.out.println("wo");
else System.out.println("ni");

}

}



------解决方案--------------------
if(b.getLabel().equals(b1.getLabel())

祝楼主中秋节快乐
  相关解决方案