我有两个班级(Main_Menu
和CancelListener
)。当我调用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
。在取消按钮上,我想显示一个特定的面板。我想将按钮视图类与按钮逻辑分开?它适用于我不使用单独的课程。
答案 0 :(得分:3)
您需要设置menu
变量:
在CancelListener类中:
private Main_Menu menu;
public CancelListener(Main_Menu menu) {
this.menu = menu;
}
然后,在构建时:
button.addActionListener(new CancelListener(this));