【问题标题】:keyboard shortcut in javajava中的键盘快捷键
【发布时间】:2011-11-09 22:16:39
【问题描述】:

我想在我正在编写的程序中添加一种作弊码。我想知道我怎么能做到这一点。例如,当我在屏幕上的任何位置时,我希望能够按下某个组合键,例如 ctl + alt + w,并从中获得一些操作。我的猜测是使用 keylistener 并将其添加到框架中。任何帮助将不胜感激。

谢谢,

class cheat implements KeyListener{

      public void keyPressed(KeyEvent e){

          char key = e.getKeyChar();

          System.out.println(key);

      }
      public void keyReleased(KeyEvent e){}

      public void keyTyped(KeyEvent e){}



      }

【问题讨论】:

  • 这是什么类型的程序?摇摆?
  • 这是一个合理的猜测;你试过了吗?
  • 不,您不应该使用 KeyListener。 Swing 旨在与键绑定一起使用。

标签: java swing keylistener


【解决方案1】:

是的,您将添加一个按键侦听器。在侦听器的触发器中,您可以将 KeyEvent 传递给辅助方法以封装逻辑,然后采取适当的行动。

isCheatCode(KeyEvent e) {
    if(e.getKeyCode() == KeyEvent.VK_W) {
        int mods = e.getModifiers();
        return (mods & InputEvent.ALT_MASK != 0)
        && mods & InputEvent.CTRL_MASK != 0;
    }
    return false;
}

【讨论】:

  • 我创建了一个简单的侦听器并将其添加到框架中,但没有任何反应。
  • 让我们看看你的触发方法。
  • 不,您不应该使用 KeyListener。 Swing 旨在为此使用键绑定。
  • 它从来都不是绝对规则,但总的来说,正如我所说,Swing 旨在使用键绑定。我尝试推广使用 Swing 的设计方式。这种情况肯定是合格的。通常最好在可用时使用更高级别的 API。绑定促进了操作的使用。另一个优点是绑定可以配置为无论组件是否有焦点都可以工作。 KeyListeners 与 AWT 一起使用,因为没有替代方案。请参阅 Key Binding List 以获取按组件列出的绑定列表。
  • 没错。每个组件都有一组预定义的操作。如果要添加其他行为,请创建自定义动作,然后将动作绑定到 KeyStroke。 Actions 也可以添加到 JButtons 和 JMenuItems 中,因此现在您拥有相同 Action 的完整 UI。您是否曾经在 JMenuItem 中使用过 accelerator。这是作为框架根窗格上的键绑定实现的。您是否曾经在按钮上使用过mnemonic?这是作为组件的键绑定来实现的。这个例子是海报问题。他想将Action 绑定到Ctrl+Alt+W
【解决方案2】:

您可以阅读 Java Swing 中的 How to Use Key Bindings

【讨论】:

  • +1,用于键绑定。 Swing 旨在使用键绑定来满足此类需求。
【解决方案3】:

http://download.oracle.com/javase/6/docs/api/java/awt/Robot.html 如果你想在java中实现它应该是你的起点

【讨论】:

  • 机器人自动完成点击或打字事件,我想手动完成
【解决方案4】:

好吧,在 Swing 应用程序中,您可以使用 KeyListeners 和 KeyBinding 来做这种事情。查看 API 和操作方法

http://download.oracle.com/javase/tutorial/uiswing/misc/keybinding.html

http://download.oracle.com/javase/tutorial/uiswing/events/keylistener.html

问候!

【讨论】:

  • +1,用于键绑定,-1 用于 KeyListner,无投票权。
猜你喜欢
  • 1970-01-01
  • 2012-07-16
  • 1970-01-01
  • 2010-11-24
  • 2018-09-16
  • 2015-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多