【问题标题】:java keystroke method calljava按键方法调用
【发布时间】:2014-11-24 13:39:08
【问题描述】:

我曾多次尝试通过咨询 Google 自行找出解决方案,但这个问题看似简单得可笑,却没有记录在案的答案。在我看来。

我只想知道:如何通过按键调用方法? 示例:按 ctrl + up -> 调用方法 zoomUp();

ps:如果该击键可以绑定到 JTextPane,那就太好了。

更新

到目前为止,我的解决方案是:

  • 创建项目:JMenuItem up = new JMenuItem("up");

  • 创建快捷方式:

up.setAccelerator(KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_UP, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()));

  • 通过监听器捕获事件:

up.addActionListener(new java.awt.event.ActionListener() { public 无效 actionPerformed(ActionEvent 事件){ //做事 } });

(- 从不添加项目,所以它是一个隐藏的快捷方式) 但这显然是荒谬的。

【问题讨论】:

标签: java keystroke


【解决方案1】:

您不能使用JMenuItem 创建“隐藏”快捷方式。一旦JMenuItem 被间接添加到Window(通常通过JMenuJMenuBarJFrame),JMenuItems 的快捷方式就会激活。如果没有该链接,则无法知道是否要触发加速器,因为同一个加速器可能会在不同的应用程序窗口中触发不同的操作。

您需要在要在其中做出反应的组件或框架上使用KeyListener

【讨论】:

  • 好的,谢谢您解决这个问题。就像我说的那样,我的印象是 KeyListener 用于“游戏”类型的输入,例如 while(true) 循环中的输入。而且我一生只需要一次放大/缩小JTextPane。但是好的,我将再次研究那个 KeyListener。
猜你喜欢
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-01
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多