JPanel键侦听器

比克:

我正在尝试添加一个包含一个的键侦听器JTabbedPane
当收到ctrl + tab时,应该切换标签。
但是按键事件从未发送过,我尝试将其添加到面板和选项卡式对象中,但是没有成功。

这是我的代码

SwitchTabsListener ctrlTabListener = new SwitchTabsListener(genericTabbedPanel);  
jMainFrame.addKeyListener(ctrlTabListener);  
genericTabbedPanel.addKeyListener(ctrlTabListener);  
减少:

通常,正确的Swing组件不会拦截您的按键事件。您必须了解,光标下方的第一个组件将收到键盘事件。如果您使用键盘选择一个按钮,则将是这个JButton接收按键事件。

为了确保获得所有这些事件,您不必在组件上注册,而只需使用KeyboardFocusManager,它就会在发生关键事件的地方接收它们。

然后,您的代码需要以下元素

KeyEventDispatcher myKeyEventDispatcher = new DefaultFocusManager();
KeyboardFocusManager.getCurrentKeyboardFocusManager().addKeyEventDispatcher(myKeyEventDispatcher);

myKeyEventDispatcher然后dispatchKeyEvent,只要在用户界面中的任何位置按下该键,都将接收到的呼叫这样,您可以确保正确调用您的代码。

注册键侦听器的另一种方法是,您需要使用HierarchyListener来添加键侦听器:移至似乎是作为根组件的子级添加/移除的每个swing组件。这不仅麻烦编写,而且真的很难调试和理解。

这就是为什么我更喜欢蛮力的原因,但是将应用程序全局按键侦听器添加到特定的键盘焦点管理器的方式虽然很优雅。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章