Button actionlistener在同一个类

时间:2016-05-10 23:45:18

标签: java

我有一个提交按钮(和一个动作监听器),它检查插入到Futoshiki拼图中的数字是否合法(检查2D数组是否有重复等)

在另一种方法中,我有一个带有动作侦听器的实际网格,它获取数字并将它们插入到2D数组中。

JButton acction listener

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动作监听器,所以它基本上是#34;提交"网格的内容然后检查它是否合法?

2 个答案:

答案 0 :(得分:0)

当然,要么保留对该动作侦听器的引用并使用keyReleased值调用null方法,要么将keyReleased的内容重构为自己的方法并调用此方法来自两个听众的方法。

答案 1 :(得分: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
        });
    }
}