线程中的异常 "AWT-EventQueue-0" java.lang.NullPointerException.从另一个类调用操作侦听器时出现问题



我的应用程序的初稿是,我的 actionListener 与用于创建 Jbutton 的类位于同一类中。 这工作正常,但我想整理一下。 有一个控制器类,我创建我的框架并让我的动作监听器。

控制器类:

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());

尝试了很多事情按钮,我似乎一无所获,请告诉你是否发现了一个愚蠢的错误。

谢谢。

在你的主窗体 GUI 中,初始化 actionlistener 类:

控制器 c = 新控制器(此);

将操作侦听器添加到按钮:

AddBtn.addActionListener(c);

并在控制器类中将构造函数更改为:

public Controller(GUI g) {
   this.GUIClass = g;
}

您是否曾经将GUIClass设置为非空值? 您的构造函数似乎为空,所以我猜不是。 如果没有,则在取消引用此引用时将获得 NPE。

未来的提示:当您遇到这种情况并且无法通过目视检查找出问题时,请在调试器中运行代码(那里有很多好的免费代码)。

最新更新