Java 需要禁用F10键';swing小程序中的s帧焦点

Java 需要禁用F10键';swing小程序中的s帧焦点,java,swing,keyevent,jmenubar,Java,Swing,Keyevent,Jmenubar,我正在使用F10作为将数据更新到数据库的快捷方式。每当我按F10时,更新工作正常,但我的焦点已移到菜单栏(该栏包含关闭、最小化和最大化)是否仍有停止此操作的方法?我知道这是windows快捷方式。是否可以停止此操作?您可以尝试从JMenuBar中删除聚焦窗口中的操作。只需将这一行添加到代码中: menuBar.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("F10"), "none"); 其中

我正在使用F10作为将数据更新到数据库的快捷方式。每当我按F10时,更新工作正常,但我的焦点已移到菜单栏(该栏包含关闭、最小化和最大化)是否仍有停止此操作的方法?我知道这是windows快捷方式。是否可以停止此操作?

您可以尝试从
JMenuBar
中删除聚焦窗口中的
操作。只需将这一行添加到代码中:

menuBar.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("F10"), "none");
其中
菜单栏是
JMenuBar
组件的参考

希望这有帮助

编辑:

事实上,如果您没有使用
JMenuBar
,上述解决方案将不起作用。另一种解决方案是创建一个空操作并使用它绑定
F10
键。(见附件)

以下是一个例子:

 //create an empty action which do nothing
Action emptyAction = new AbstractAction(){
     public void actionPerformed(ActionEvent e)
     {   //do nothing here   }};

//bind F10 with the empty action
KeyStroke f10 = KeyStroke.getKeyStroke( "F10");
frame.getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(f10, "F10");
frame.getRootPane().getActionMap().put("F10", emptyAction);

其中
frame
是您的
JFrame
组件。

当然。使用启动小程序自由浮动。我已经从这里看到了这一点,原因是我再次询问,我没有使用JMenuBar。我只使用JFrame表单。那么我如何使用此代码。任何人都可以帮助我完成此操作。抱歉,我没有注意到这个细节。请查看我的编辑。我需要在按f10时执行操作。我在按f10时将记录插入数据库。按f10后,我将所有文本字段设置为空,并将光标定位到第一个文本字段。同时,我将所有数据插入数据库。那么我该怎么办?