【问题标题】:JAVA - Creating a KeyPress Event During a Button Action Listener click eventJAVA - 在按钮操作侦听器单击事件期间创建 KeyPress 事件
【发布时间】:2011-08-06 16:05:08
【问题描述】:

我现在正在创建一个 java Sudoku GUI 应用程序。

显示数独谜题的网格只是 myJButtons(实现 JButton)的二维数组 - 对于这个问题,它们可以被视为常规 JButtons。

程序将允许单击网格中的按钮,调用动作侦听器。

有没有办法允许在单击按钮以允许按下数字时创建 KeyAdapter Keypress - 物理键 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

    }
}

提前感谢任何可以回答这个问题的人!

【问题讨论】:

    标签: java keypress actionlistener keyevent


    【解决方案1】:

    正如我所发现的,您可以构造任何新事件,然后通过Component.processXxxEvent() 发送它

    【讨论】:

      【解决方案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;
                      }
                  }
              });
      
          }
      
      }
      

      【讨论】:

      • 感谢您的建议。刚刚实现它,就像一个魅力!
      猜你喜欢
      • 1970-01-01
      • 2018-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-08
      • 1970-01-01
      • 1970-01-01
      • 2018-11-17
      相关资源
      最近更新 更多