2016-05-10 46 views
0

我有一個提交按鈕(和動作偵聽器),其檢查是否插入Futoshiki難題的數目是合法的(檢查重複等的2D陣列)按鈕的ActionListener調用在同一類中的另一動作偵聽器

在另一種方法,我有一個動作監聽器的實際網格,獲取數字並將它們插入到二維數組中。

的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'方法?這是_method_在我的_setGrid method_中。對不起,如果這是一件壞事 – LogicGates

+0

你肯定沒有方法內的方法,因爲這是不可能的。您可能在方法內的匿名類中有一個方法。但正如我所說的,eihter將這個匿名類的實例賦值給另一個作用域可以訪問的某個變量,或者將該方法的內容轉換爲兩個作用域都可以訪問的方法。 – Vampire

0

儘管還有其他兩種方法,但還有一種方法可以解決這個問題,但我不確定哪種方法最適合。

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 
     }); 
    } 
} 
相關問題