的默认操作F10是显示窗口菜单。但是,我想禁用此功能。
更新: 背景:如果用户按下任何键,我想在JTextField中实现一种特殊的行为。不幸的是,JTextField在F10按下时无法获取事件,因为它被窗口捕获(并且显示了菜单)。
有谁知道如何在窗口中禁用此键绑定?
我试图在根窗格中禁用它,但没有成功:
frame.getRootPane().getInputMap().put(KeyStroke.getKeyStroke(KeyEvent.VK_F10, 0), "none");
Run Code Online (Sandbox Code Playgroud)
我进行了很多搜索,但没有找到解决该问题的方法。也许你们当中的一个知道答案。
UPDATE2 这里是重现此行为的代码示例:
public static void main(final String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
JFrame.setDefaultLookAndFeelDecorated(true);
final JTextField edit = new JTextField();
edit.setEditable(false);
edit.addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(final KeyEvent ke) {
edit.setText(KeyEvent.getKeyText(ke.getKeyCode()));
}
});
final JFrame frame = new JFrame("DEMO");
frame.setSize(320, 240);
frame.getContentPane().add(edit);
frame.setVisible(true);
}
});
Run Code Online (Sandbox Code Playgroud)
}
请注意:根据“ setDefaultLookAndFeelDecorated”设置为true还是false,会有不同的行为。
提前致谢 :)