当前位置: 首页 > 面试题库 >

设置应用程序范围的键侦听器

叶英哲
2023-03-14
问题内容

我如何设置应用程序范围的键侦听器(键盘快捷键),以便在按下组合键(例如Ctrl+ Shift+ T)时,将在Java应用程序中调用特定操作。

我知道可以设置JMenuBar菜单项的键盘快捷键,但就我而言,该应用程序没有菜单栏。


问题答案:

查看Java教程的“
如何使用键绑定”部分。

您需要Action在组件的一个中创建并注册一个,ActionMap并在应用程序的一个组件中注册一个(KeyStrokeAction
Name
)对InputMap。假设您没有,则JMenuBar可以JPanel在应用程序中向顶级注册键绑定。

例如:

Action action = new AbstractAction("Do It") { ... };

// This is the component we will register the keyboard shortcut with.
JPanel pnl = new JPanel();

// Create KeyStroke that will be used to invoke the action.
KeyStroke keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK);

// Register Action in component's ActionMap.
pnl.getActionMap().put("Do It", action);

// Now register KeyStroke used to fire the action.  I am registering this with the
// InputMap used when the component's parent window has focus.
pnl.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(keyStroke, "Do It");


 类似资料:
  • 问题内容: 我想为Java Swing应用程序创建一个应用程序范围的键盘快捷键。遍历所有组件并在每个组件上添加快捷方式,具有与焦点相关的副作用,并且似乎是蛮力解决方案。 有人有更清洁的解决方案吗? 问题答案: 安装自定义KeyEventDispatcher。KeyboardFocusManager类也是使用此功能的好地方。 KeyEventDispatcher

  • 问题内容: 有没有一种方法可以在外部设置标头? 登录用户后,我从服务器获取了Auth-Token,我需要将其作为HTTP标头添加到以下所有请求中。 问题答案: 似乎规范了键名。

  • 我在尝试运行应用程序时面临这个问题: 2014年5月13日1:35:26 PM org.apache.catalina.core.StandardContext listenerStart严重:配置类org.apache.catalina.deploy.applicationListener的应用程序侦听器时出错@6a5b20 java.lang.classnotfoundexception:co

  • 我正在Windows 64位机器Java 7上运行Tomcat 7.0.70和Eclipse Kepler。当我从Eclipse运行我的软件时,它可以完美地工作,但只有在我将项目导出到WAR文件后,将项目部署到Tomcat时,我才会出现以下错误: AppContextListener是我自己的文件,它实现了ServletContextListener。这是文件的一部分,我删除了其中除了contex

  • 问题内容: 我想做些类似的工作: 但是,不幸的是,听众甚至没有得到呼叫。有EventEmitter有什么办法吗?我可以听一下,但是,我真的希望有一些特殊的(或显而易见的)方法可以做到这一点… 谢谢您的帮助! 问题答案: 否,因为侦听器中的值是事件发射器对象。 但是,您可以做的是 未调用事件处理程序的原因是因为所有处理程序都存储在其中,因此如果在其上进行复制应该可以工作。

  • 问题内容: 我的应用程序中有一个通知表的Firebase 事件侦听器,当该应用程序在后台时,我想触发推送通知。 这是监听器: 当应用程序位于前台时,这非常有用。然后,在我的应用程序委托方法中添加一个后台观察器,以在后台对其进行观察: 但是当应用程序在后台运行时,事件观察器不会触发。Ive调查了Firebase Cloud Messenger以解决此问题,并遇到了类似这样的帖子: 是否可以使用Fir