0

我的应用程序的第一个草稿是,我将 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());

我尝试了很多东西按钮,我似乎没有得到任何地方,请告诉你是否发现了一个愚蠢的错误。

谢谢你。

4

2 回答 2

1

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

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

将动作监听器添加到您的按钮:

AddBtn.addActionListener(c);

并在您的 Controller 类中将您的构造函数更改为:

public Controller(GUI g) {
   this.GUIClass = g;
}
于 2012-11-16T15:55:25.557 回答
0

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

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

于 2012-11-16T15:21:43.210 回答