2016-05-10 6 views
0

I Futoshikiパズルに挿入数が合法であるかどうかを確認する送信ボタン(およびアクション・リスナーが)ボタン

で(重複などのための2Dアレイをチェックする)を有しますもう一つの方法私は数字を取得し、それらを2D配列に挿入するアクションリスナーを持つ実際のグリッドを持っています。

するJButton acctionリスナー

JButton isRight = new JButton("Check My Answer"); 
isRight.addActionListener(new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent e) { 

    if (!(puzzle.isLegal())) { 
     JOptionPane.showMessageDialog(FutoshikiFrame.this, 
     puzzle.getProblems(), 
     "You made a mistake!", 
     JOptionPane.INFORMATION_MESSAGE); 
    } else { 
     JOptionPane.showMessageDialog(FutoshikiFrame.this, 
     "YOU WIN!", 
     "YES THATS FINE", 
     JOptionPane.INFORMATION_MESSAGE); 
    } 
    puzzle.printProblems.clear(); 

    } 
}); 

グリッドアクションリスナー

public void keyReleased(KeyEvent e) { 
    String getInsertedValue = Emptysquare.getText(); 
    int getInsertedIntValue = Integer.parseInt(getInsertedValue); 
    setSquareValue(r, c, getInsertedIntValue); 
    System.out.print(getSquareValue(r, c)); 
} 

それは基本的にグリッドの内容を「提出」だから私はのJButtonからkeyReleasedアクションリスナーにアクセスできる方法はありますし、その法的?

答えて

0

確かに、単にどちらかそのアクションリスナーへの参照を保持し、null値でkeyReleasedメソッドを呼び出すか、自分の方法にkeyReleasedの内容をリファクタリングし、両方のリスナーからこのメソッドを呼び出します。

+0

私は 'keyReleased'メソッドを呼び出す方法を教えてください。私の_setGridメソッド_の_method_です。これは悪いことである場合は事前にお詫び申し上げます。 – LogicGates

+0

メソッド内にメソッドを持たないようにするには、これは不可能です。あなたはおそらくメソッド内の匿名クラスのメソッドを持っています。しかし、私が言ったように、この匿名クラスのインスタンスを他のスコープがアクセス可能な変数に割り当てるか、メソッドの内容を両方のスコープがアクセスできるメソッドに書き換えます。 – Vampire

0

2つの方法がありましたが、ここでは別の方法がありますが、どちらを使うのが最もよいかわかりません。

public class YourClass { 
    JButton isRight; 

    public YourClass() { 
     this.isRight = new JButton(); 

     this.isRight.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent e) { 
       YourClass.this.isRight.getKeyListeners()[0].keyReleased(null); 

       //Other action related code 
      } 
     }); 

     isRight.addKeyListener(new KeyListener() { 
      public void keyReleased(KeyEvent e) { 
       //Key related code 
      } 

      //Other required key listener methods 
     }); 
    } 
}