我知道你可以调用JComponent.setFocusable(false)
来使Java组件不被关注。但是因为我在应用程序中有很多组件,所以我想知道是否有比在几十个对象中调用它更简单的方法。像UIDefaults
值?是否有可能使JComponent默认为不可聚焦?
我在找这个,因为我的应用程序全屏运行,JFrame
上有一个KeyListener
,它侦听按键触发各种事件。但是我发现无论何时点击一个JButton
或其他添加的组件,它都会获得焦点,关键事件永远不会到达JFrame
。因此,无论孩子有什么焦点,都可以通过单个父容器捕获关键事件的更优雅的方式来解决我的问题。
只是一个小心当心:菜单加速器只能如预期的,如果他们是唯一的 - 与聚焦时窗口绑定是最后一个只有在没有人想要的时候才能看到它们它们。 – kleopatra
我使用Key Bindings而不是KeyListener,而且这样做。至少有一次,我开始为InputMap使用JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT标志。 –
@Mike,然后论坛程序是“接受”你使用的答案。 – camickr