我有一个提交按钮(和一个动作监听器),它检查插入到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;提交"网格的内容然后检查它是否合法?
答案 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
});
}
}