JAVA - 在按钮动作侦听器单击事件期间创建KeyPress事件

时间:2011-04-15 22:06:12

标签: java keypress actionlistener keyevent

我正在创建一个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

    }
}

首先感谢能够回答此问题的任何人!

2 个答案:

答案 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()

发送