java监听类调用其他类中的Button属性报错
publicclassMyFrameextendsJFrame{JButtonbtn1,btn2//至于Frame内容,我就忽略不写了publicvoidframe(){...
public class MyFrame extends JFrame{
JButton btn1, btn2
//至于Frame内容,我就忽略不写了
public void frame(){
btn1 = new JButton("One");
btn2 = new JButton("Two");
btn1.addActionLinstener(new MyAction);
}
}
public class MyAction implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
MyFrame mf = new MyFrame();
if(e.getActionCommand() == "One"){
mf.btn2.setEnabled(false);
}
}
}
public class Main{
public static void main(String[] args) {
MyFrame mf = new MyFrame();
mf.frame();
}
}
当我点击btn1的时候,报空指针错误,为什么呢?求教! 展开
JButton btn1, btn2
//至于Frame内容,我就忽略不写了
public void frame(){
btn1 = new JButton("One");
btn2 = new JButton("Two");
btn1.addActionLinstener(new MyAction);
}
}
public class MyAction implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
MyFrame mf = new MyFrame();
if(e.getActionCommand() == "One"){
mf.btn2.setEnabled(false);
}
}
}
public class Main{
public static void main(String[] args) {
MyFrame mf = new MyFrame();
mf.frame();
}
}
当我点击btn1的时候,报空指针错误,为什么呢?求教! 展开
3个回答
展开全部
你在按钮事件中,重新实例化了MyFrame;但没有调用mf.frame()进行按钮的实例化,所以会报空指针错误;而且我觉得你在按钮中进行MyFrame的实例化,逻辑顺序不对,应该是先在MyFrame构造函数中进实例化,然后对button实例化并增加其对应的事件,最后才调用事件!
追问
我将MyFrame中增加了构造函数实例化JButton,这次不报空指针了,但是MyAction类中的mf.btn2.setEnabled(false);没有效果,请问为什么?怎么才能让他有效?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把这句:MyFrame mf = new MyFrame();
改成:JFrame jf=new MyFrame();
改成:JFrame jf=new MyFrame();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询