我的应用程序的第一个草稿是我将actionListener放在与用于创建Jbutton的类相同的类中。这个工作正常,但我想整理它。有一个控制器类,我创建我的框架并在我的actionlistener。
控制器类:
public class Controller extends JPanel implements ActionListener {
GUI GUIClass;
public Controller() {
// TODO Auto-generated constructor stub
}
//Main
//create frame
// actionListener method below.....
public void actionPerformed(ActionEvent e) {
Object src = e.getSource();
System.out.println("..........");
if (src == GUIClass.AddBtn) { //Line 120 where I Have the issue
}
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Controller.actionPerformed(Controller.java:120)
......
.......
.....
我的gui课* *
我宣布我的按钮
JButton AddBtn, perviousBtn, NextBtn;
这里我如何添加监听器到按钮
AddBtn.addActionListener(new Controller());
我尝试了一些按钮,我似乎无处可去,请告诉你是否发现了一个愚蠢的错误。
谢谢。
答案 0 :(得分:1)
在主窗体GUI中初始化actionlistener类:
控制器c =新控制器(this);
将actionlistener添加到按钮:
AddBtn.addActionListener(C);
并在Controller类中将构造函数更改为:
public Controller(GUI g) {
this.GUIClass = g;
}
答案 1 :(得分:0)
你有没有将GUIClass
设置为非空的东西?你的构造函数似乎是空的,所以我猜不是。如果没有,那么在取消引用此引用时,您将获得NPE。
未来提示:当你遇到这样的情况并且你无法通过视觉检查找出问题时,在调试器中运行代码(那里有很多好的免费代码)。