[英]Some strange behaviour in JAVA
我创建了简单的代码片段,以演示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);
}
}
我有一个带有JButton
JFrame
组件。 JButton
有一个快捷方式(键盘编号1
)。
当我在键盘的第一行按1
时,动作正在执行。 它正在创建JDialog
在其中使用一个组件JTextField
。 那么奇怪的是
当我按1
,该数字有时会打印在JDialog
JTextField
区域中。 有时会发生。 它似乎是从键盘缓冲区中获取的。
JDialog
打开之前如何清除它? 还是有其他解决方案?
提前致谢。
尝试绑定到按键释放事件,而不是按键事件,以便在对话框打开时肯定已经释放了按键:
KeyStroke btnShortcut = KeyStroke.getKeyStroke(KeyEvent.VK_1, 0, true);
^^^^
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.