2011-04-15 71 views
1

我正在创建java Sudoku GUI应用程序。JAVA - 在按钮动作期间创建KeyPress事件监听器单击事件

显示Sudoku难题的网格只是一个myJButtons(实现JButton)的2维数组 - 对于这个问题,他们可以被当作常规的JButtons。

该程序将允许单击网格中的按钮,调用一个actionlistener。

是否有一种方法来允许在点击按钮以允许数字按下时创建KeyAdapter按键 - 物理按键1,2,3,4,5,6,7,8,9,0

我希望动作侦听器只在单击按钮时工作。

一个简单的例子是一个按钮的框架。当按下按钮时,用户可以按下键盘上的物理键,将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

我会使用另一种解决方案。每次单击按钮时,都可以不必创建KeyEvent侦听器,而是可以在应用程序启动过程中注册关键侦听器。然后,您可以使用标志来检查按钮是否先被点击。只有当这个标志为真,你才能在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; 
       } 
      } 
     }); 

    } 

} 
+0

感谢您的建议发送。刚刚实施它,就像一个魅力! – Jay 2011-04-15 22:24:52

0

正如我发现,您可以构建任何新的情况,然后经由Component.processXxxEvent()