将JButton actionListener传递给另一个Java类时出现Nullpointer异常

时间:2011-07-28 01:16:46

标签: java nullpointerexception jpanel cardlayout

我有两个班级(Main_MenuCancelListener)。当我调用CancelListener的实例来使用正确的actionPerformed方法时,我得到NullPointerException

在我的MainMenu.java类中,我声明了这样的按钮:

JButton button = new JButton();
button.addActionListener(new CancelListener());

这是我的CancelListener()类。

class CancelListener implements ActionListener {

    private Main_Menu menu;
    public JPanel mpan;

    public CancelListener() {
    }

    @Override
    public void actionPerformed(ActionEvent ae) {


        System.out.println("worked");
        try {

            CardLayout c1 = (CardLayout) (menu.MainPanel.getLayout());
            c1.show(menu.MainPanel, "AppPanel");
        } catch (Exception e) {

            System.out.println("Exception here " + e);
        }
    }
}

更多信息:MainPanel是具有JPanel结构的CardLayout。在取消按钮上,我想显示一个特定的面板。我想将按钮视图类与按钮逻辑分开?它适用于我不使用单独的课程。

1 个答案:

答案 0 :(得分:3)

您需要设置menu变量:

在CancelListener类中:

private Main_Menu menu;

public CancelListener(Main_Menu menu) {
    this.menu = menu;
}

然后,在构建时:

button.addActionListener(new CancelListener(this));