4

我在北部有一个带有选项卡式窗格的摇摆 gui。几个关键事件被添加到它的输入映射中:

InputMap paneInputMap = pane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
paneInputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_E, KeyEvent.CTRL_MASK ), "finish");
paneInputMap.put( KeyStroke.getKeyStroke( KeyEvent.VK_F1, KeyEvent.CTRL_MASK ), "toggletoolbar");

如果工具栏中的选项卡式窗格或其他按钮具有焦点,则Ctrl+F1不起作用。如果另一个组件被聚焦(例如 JTree),Ctrl+F1执行动作。

问题是,如果我将 Keycode 更改为 eg ,它在任何地方都可以使用VK_F2

密钥F1在程序的其他任何地方都没有使用。

任何的想法?

谢谢,安德烈

编辑: java源代码中的全文搜索给出了答案:如果按下组合键,则ToolTipManager注册键Ctrl+以显示工具提示文本。F1因此,如果带有工具提示的按钮获得焦点,Ctrl+F1将由ToolTipManager. 否则我的动作被调用。

4

2 回答 2

2

为了得到答案,这是从您在问题中的编辑中复制的解决方案。;-)

ToolTipManager 注册 Key Ctrl+F1以在按下组合键时显示工具提示文本。因此,如果带有工具提示的按钮获得焦点, Ctrl+F1将由 ToolTipManager 处理。否则我的动作被调用。

于 2008-09-26T11:06:25.503 回答
0

操作系统可能会重新定位F1关键吗?安装一个关键监听器并查看处理了哪些事件。

顺便说一句:如果您可以编辑您的问题并插入一些可测试的代码,那将会有所帮助。

于 2008-09-26T10:40:57.330 回答