首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >有没有一种方法可以在没有JFrame的情况下获取键盘事件?

有没有一种方法可以在没有JFrame的情况下获取键盘事件?
EN

Stack Overflow用户
提问于 2011-01-06 04:53:05
回答 3查看 12.5K关注 0票数 4

我想让我的程序取消隐藏主窗口时,用户按下一些快捷键。有没有办法获得全局的按键事件,而不仅仅是当焦点在应用程序框架内时发生的事件?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-01-06 05:07:25

这可能会做你想要的事情。请注意,此代码正在检查Ctr-F击键。我使用此代码从应用程序中的任何内容打开一个查找对话框。我很确定这个应用程序必须要有焦点。至少要尝试一下..。

AWTEventListener listener = new AWTEventListener() {
  @Override
  public void eventDispatched(AWTEvent event) {
    try {
      KeyEvent evt = (KeyEvent)event;
      if(evt.getID() == KeyEvent.KEY_PRESSED && evt.getModifiers() == KeyEvent.CTRL_MASK && evt.getKeyCode() == KeyEvent.VK_F) {

      }
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }
};

            Toolkit.getDefaultToolkit().addAWTEventListener(listener, AWTEvent.KEY_EVENT_MASK);

编辑:我想我知道你想要什么了。基本上,当应用程序没有焦点时。如果是这样,那么您可能必须使用本机API (JNI)来挂接操作系统事件,但这会迫使您使用特定的操作系统...

票数 5
EN

Stack Overflow用户

发布于 2011-01-06 05:15:10

This可能会很有用。我不确定是否有一个库可以在Windows/Linux/Mac上运行。对于Windows,您将需要一些使用本机代码来创建键盘钩子的外部库。我不知道如何在另一个OSes上做到这一点。

票数 4
EN

Stack Overflow用户

发布于 2019-08-05 00:43:16

使用JFrame执行此操作的一种解决方案是将其不透明度设置为0.0,并向其添加键控侦听器。但用户将在其快捷方式栏中看到一个图标...

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4609068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档