Java Swing:Ctrl + F1不能全局工作,而是互相组合键

时间:2008-09-26 09:55:29

标签: java swing keyevent

我有一个摆动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更改为例如,它可以在任何地方工作VK_F2

F1 不会在程序中的任何其他地方使用。

有什么想法吗?

谢谢, 安德烈

编辑:java源代码中的全文搜索给出了答案:ToolTipManager注册了密钥 Ctrl + F1 如果按下组合键,则显示工具提示文本。因此,如果聚焦了具有工具提示的按钮,则{kbd> Ctrl + F1 ToolTipManager处理。否则我的行动就会被召唤。

2 个答案:

答案 0 :(得分:2)

这样就可以得到答案,这是从问题编辑中复制的解决方案。 ; - )

  

ToolTipManager注册Key    Ctrl + F1 显示工具提示文本   按下组合键。因此,如果   一个带有工具提示的按钮被聚焦,    Ctrl + F1 由。处理   ToolTipManager会。否则我的行动是   调用。

答案 1 :(得分:0)

可能是OS重新定位 F1 键吗?安装密钥监听器并查看处理的事件。

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