Java 需要禁用F10键';swing小程序中的s帧焦点
我正在使用F10作为将数据更新到数据库的快捷方式。每当我按F10时,更新工作正常,但我的焦点已移到菜单栏(该栏包含关闭、最小化和最大化)是否仍有停止此操作的方法?我知道这是windows快捷方式。是否可以停止此操作?您可以尝试从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"); 其中
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后,我将所有文本字段设置为空,并将光标定位到第一个文本字段。同时,我将所有数据插入数据库。那么我该怎么办?