首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JPanel的Nullpointerexception

问JPanel的Nullpointerexception
EN

Stack Overflow用户
提问于 2013-04-13 03:22:49
回答 2查看 1K关注 0票数 0

当我试图在actionPerformed方法中调用panel2时,我得到了nullpointerexception。请帮我摆脱这个愚蠢的麻烦。

代码语言:javascript
复制
public class PanelEventTest implements ActionListener {
    /**
     * @param args
     */
     JFrame frame;
     JPanel panel1, panel2;
     String[] list = {"Sachin","Tarun","Vipin"};
     JList jlist;
     JButton next;

     void originalFrame()
     {
         frame = new JFrame();
         frame.setSize(500, 300);
         frame.setVisible(true);
         frame.setLayout(new FlowLayout());
         frame.add(panel1());
         frame.add(panel2());
     }

     JPanel panel1()
     {
         panel1 = new JPanel();
         next = new JButton("Next");
         next.addActionListener(new PanelEventTest());
         panel1.add(next);
         return panel1;
     }

    JPanel panel2()
    {
         panel2 = new JPanel();
         jlist = new JList(list);
         panel2.add(jlist);
         panel2.add(new JLabel("Test"));
         return panel2;
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new PanelEventTest().originalFrame();
    }


    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        if(e.getActionCommand() == "Next")
        {
            panel2.removeAll();
        }
    }
 }

action event未附加panel2,这是导致此异常的原因吗?

EN

回答 2

Stack Overflow用户

发布于 2013-04-13 03:26:39

而不是

代码语言:javascript
复制
next.addActionListener(new PanelEventTest());

你应该有

代码语言:javascript
复制
next.addActionListener(this);

否则,事件侦听器将是PanelEventTest的另一个实例,其originalFrame()方法从未被调用过,因此其panel2变量为null。(请注意,即使调用了它的originalFrame()方法,它也会从它自己的panel2中删除所有内容,而不是从包含该按钮的框架的panel2中删除)。

你应该为你的监听器使用(匿名)内部类,而不是让框架本身成为一个监听器:

代码语言:javascript
复制
next.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        panel2.removeAll();
    }
});
票数 3
EN

Stack Overflow用户

发布于 2013-04-13 03:27:03

也许吧

next.addActionListener(this);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15979304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档