我正在创建一个java Sudoku GUI应用程序。
用于显示数独谜题的网格只是myJButtons的二维数组(实现JButton) - 对于这个问题,它们可以被视为常规JButton。
程序将允许单击网格中的按钮,调用actionlistener。
有没有办法允许在单击按钮时创建KeyAdapter Keypress以允许按下数字 - 物理键1,2,3,4,5,6,7,8,9,0 < / p>
我希望动作侦听器仅在单击按钮时起作用。
更简单的例子是带有单个按钮的Frame。按下按钮时,用户可以按键盘上的物理键,将jbutton文本设置为键值。除非首先单击按钮,否则按下其他按键不会更改按钮文本。
class ClickAction implements ActionListener { // Action Listener called when button is Pressed
public void actionPerformed(ActionEvent ae) {
//need a way to create a keyevent listener here
}
}
首先感谢能够回答此问题的任何人!
答案 0 :(得分:2)
我会使用其他解决方案。每次单击Button时,您都可以在应用程序启动期间注册键侦听器,而不是创建KeyEvent侦听器。然后,您可以使用标志来检查是否先单击了该按钮。仅当此标志为true时,才执行KeyEvent侦听器中的操作。否则,您将跳过KeyEvent侦听器中的所有语句。
这是一个例子:
public class TestClass {
private boolean isButtonClicked = false;
public void testYourButtons() {
JButton myButton = new JButton();
myButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
isButtonClicked = !isButtonClicked;
}
});
myButton.addKeyListener(new KeyListener() {
@Override
public void keyTyped(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyReleased(KeyEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void keyPressed(KeyEvent arg0) {
if (isButtonClicked) {
// TODO Do here your event handling
isButtonClicked = false;
}
}
});
}
}
答案 1 :(得分:0)
正如我发现的那样,您可以构建任何新事件,然后通过Component.processXxxEvent()