【问题标题】:Calling ActionEvent from within KeyEvent or any other listener从 KeyEvent 或任何其他侦听器中调用 ActionEvent
【发布时间】:2013-11-17 06:07:45
【问题描述】:

基本上,我希望当用户按下 ENTER 键(通过其 ASCII 检查)时,应该创建 ActionEvent 对象并调用它的 actionPerformed,即触发我自己的动作事件。请提供所需的语法 谢谢! :

【问题讨论】:

  • 从什么到什么?你有什么基础设施?监听器是如何注册的?
  • 我有一个简单的登录页面,用户在其中输入他的姓名和密码,有一个登录按钮,用户可以登录。 frame 和 textfields 注册到 keylisteners。我希望当我按下回车键时,我应该手动调用 ActionEvent,以便将控制权转移到 actionPerformed 并被视为按下登录按钮。

标签: java swing user-interface actionlistener keylistener


【解决方案1】:

“我应该手动调用 ActionEvent,以便将控制权转移到 actionPerformed”

不,你不应该。您也不应该在文本字段上使用KeyListeners。如果您想知道用户何时“操作”该字段,只需在字段中添加 ActionListener。

您也可以使用JRootPane#setDefaultButton,它可以在 UI 特定的激活事件发生时触发按钮

【讨论】:

  • 我不知道将动作侦听器添加到文本字段时会发生什么。请解释一下
  • 看看How to use text fields 和How to write an action listener。基本上,当用户“操作”一个字段(通常是按回车键)时,所有注册的操作侦听器都会收到通知。您还可以使用JButton#doClick 以编程方式单击按钮
【解决方案2】:

对于每一帧,您可以设置一个默认按钮,该按钮将自动监听 Enter 键。当您在该帧中按 Enter 时,将调用 actionPerformed() 方法。

frame.getRootPane().setDefaultButton(Button);

看到这个:-

Allowing the "Enter" key to press the submit button, as opposed to only using MouseClick

http://docs.oracle.com/javase/7/docs/api/javax/swing/JRootPane.html#setDefaultButton%28javax.swing.JButton%29

关于

杰

【讨论】:

    【解决方案3】:

    如果您的框架有很多按钮,请像这样使用。 检查您的密钥 ascii 并确定它是 ENTER 或 ESC。 并使用此代码

    ok.doClick(); or cancel.doClick();
    

    ok,cancel 是按钮,动作会自动调用。

    【讨论】:

      猜你喜欢
      • 2021-09-17
      • 2014-08-27
      • 2013-11-18
      • 1970-01-01
      • 1970-01-01
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多