0

我有两个班级(Main_MenuCancelListener)。当我调用 my 的一个实例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是一个JPanelCardLayout结构的。在取消按钮上,我想显示一个特定的面板。我想将我的按钮视图类与按钮逻辑分开?当我不使用单独的课程时它可以工作。

4

1 回答 1

3

您需要设置menu变量:

在 CancelListener 类中:

private Main_Menu menu;

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

然后,在构建时:

button.addActionListener(new CancelListener(this));
于 2011-07-28T01:20:19.450 回答