如何让应用程序中的所有组件响应特定的按键事件?
我的意思是,无论焦点在哪里,在网络浏览器中按“F5”都会刷新网页。我如何在 Java 中使用 GUI 应用程序执行此操作?我可以对所有组件执行“addKeylistener”,但我确信这不是正确的方法。
I mean, like, pressing 'F5' in web browser will refresh the web page regardless of where the focus is. How do i do this in Java with GUI app? I can do 'addKeylistener' to all components but I'm sure that's not the proper way.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用 Swing 的输入和操作映射机制:
You can use Swing's input and action map mechanism:
此类任务的最佳解决方案是将侦听器注册到标准
KeyboardFocusManager
,就像我最近在这个答案中解释的那样< /a>.The best solution for that kind of task is to register a listener into standard
KeyboardFocusManager
, like I recently explained in this answer.另一种选择是为您的应用程序使用菜单栏。然后“刷新”就成为菜单上的一个菜单项,您可以将 F5 指定为该菜单项的加速键。它会在幕后为您进行按键绑定。
这是一个很好的方法,因为现在您有了一个自我记录的 GUI。用户可以通过搜索菜单中的各种选项来调用刷新。高级用户最终将学会加速键,甚至不会使用鼠标。与所有 GUI 设计一样,您应该能够使用键盘或鼠标调用函数。
Another option is to use a menubar for your application. Then Refresh just becomes a menu item on a menu and you can assign F5 as an accelerator to the menu item. Behind the scenes it will do the key bindings for you.
This is a good approach because now you have a self docummenting GUI. User can invoke refresh by searching the menu for various options. Advanced users will eventually learn the accelerator key and and not even use the mouse. Like all GUI design you should be able to invoke a function using either the keyboard or the mouse.
您可以将
AWTEventListener
添加到java.awt.Toolkit
You may add an
AWTEventListener
to thejava.awt.Toolkit