0

私のアプリケーションの最初のドラフトは、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());

どこにも行かないように見えるボタンをたくさん試してみましたが、ばかげた間違いを見つけたら教えてください。

ありがとうございました。

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

GUIClassnull 以外の値を設定したことはありますか? あなたのコンストラクターは空に見えるので、そうではないと思います。そうでない場合は、この参照を逆参照するときに NPE が発生します。

今後のヒント: このような状況に陥り、目視検査で問題を特定できない場合は、デバッガーでコードを実行してください (優れた無料のデバッガーがたくさんあります)。

于 2012-11-16T15:21:43.210 に答える