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

将JButton actionListener传递给另一个Java类时出现Nullpointer异常,java,nullpointerexception,jpanel,cardlayout,Java,Nullpointerexception,Jpanel,Cardlayout,我有两个类(Main_Menu和CancelListener)。当我调用我的CancelListener实例以使用正确的actionPerformed方法时,我得到一个NullPointerException 在MainMenu.java类中,我声明如下按钮: JButton button = new JButton(); button.addActionListener(new CancelListener()); 这是我的CancelListener()类 进一步信息:MainPanel是

我有两个类(
Main_Menu
CancelListener
)。当我调用我的
CancelListener
实例以使用正确的
actionPerformed
方法时,我得到一个
NullPointerException

在MainMenu.java类中,我声明如下按钮:

JButton button = new JButton();
button.addActionListener(new CancelListener());
这是我的CancelListener()类


进一步信息:
MainPanel
是一个
JPanel
,具有
cardplayout
结构。在“取消”按钮上,我想显示一个特定的面板。我想将我的按钮视图类与按钮逻辑分开?当我不使用单独的类时,它可以工作。

您需要设置
菜单变量:

在CancelListener类中:

private Main_Menu menu;

public CancelListener(Main_Menu menu) {
    this.menu = menu;
}
然后,在构建时:

button.addActionListener(new CancelListener(this));

您需要设置
菜单
变量:

在CancelListener类中:

private Main_Menu menu;

public CancelListener(Main_Menu menu) {
    this.menu = menu;
}
然后,在构建时:

button.addActionListener(new CancelListener(this));

@沃兹:是的,就是这样(1+)。无论何时获得NullPointerException(NPE),始终检查导致异常的行上使用的引用变量,并找出哪一个为null。然后,通常很容易在代码中检查它为什么为null(在这里,您在使用菜单变量之前从未初始化它)。非常感谢。我会在4分钟内选择这个答案。再次感谢您,您知道如何在嵌套类中执行此操作吗?@Warz:是的,就是这样(1+)。无论何时获得NullPointerException(NPE),始终检查导致异常的行上使用的引用变量,并找出哪一个为null。然后,通常很容易在代码中检查它为什么为null(在这里,您在使用菜单变量之前从未初始化它)。非常感谢。我会在4分钟内选择这个答案。再次感谢您,您知道如何在嵌套类中实现这一点吗?