我已经创建了简单的代码片段来演示JAVA的一些奇怪的东西.
public class Start extends JFrame {
public static JFrame mainFrame;
public static void main(String[] args) {
JFrame f = new JFrame();
mainFrame = f;
f.setSize(400, 400);
Action btn_action = new AbstractAction() {
public void actionPerformed(ActionEvent arg0) {
System.out.println("test");
JDialog d = new JDialog(mainFrame, "Test Dialog", true);
d.setSize(200, 200);
d.setLocationRelativeTo(null);
JTextField text = new JTextField();
d.add(text);
d.setVisible(true);
}
};
JButton btn = new JButton(btn_action);
btn.setText("Click me");
KeyStroke btnShortcut = KeyStroke.getKeyStroke(KeyEvent.VK_1, 0);
btn.getActionMap().put("btn_click", btn_action);
btn.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(btnShortcut, "btn_click");
f.add(btn);
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个JFrame组件上面有一个JButton.JButton有一个快捷方式(键盘号码1).
当我按下1键盘的顶行时,动作正在执行.它正在创建JDialog一个组件-- JTextField. 关于什么是奇怪的
当我按下1,这个数字有时打印的JTextField区域JDialog.它有时会发生.它似乎取自键盘缓冲区.
JDialog打开之前如何清除它?还是有其他解决方案吗?
提前致谢.
尝试绑定到键释放事件,而不是按键事件,以便在对话框打开时确定释放键:
KeyStroke btnShortcut = KeyStroke.getKeyStroke(KeyEvent.VK_1, 0, true);
^^^^
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |