【发布时间】:2012-08-11 20:25:07
【问题描述】:
我需要检查用户何时按下某个键并释放它。 如果有钥匙,我会做一次。
我使用击键来获取我想要关联动作的按钮。 我也使用信号量来解决这个问题,但它看起来很疯狂
我的代码: `
InputMap inputMap = jPanel1.getInputMap();
KeyStroke keyPressed = KeyStroke.getKeyStroke(KeyEvent.VK_1, 0, false);
KeyStroke keyReleased = KeyStroke.getKeyStroke(KeyEvent.VK_1, 0, true);
//------------------------------------------
jPanel1.getActionMap().put("_1000Press", _1000Press);
inputMap.put(keyPressed, "_1000Press");
jPanel1.getActionMap().put("_1000Release", _1000Release);
inputMap.put(keyReleased, "_1000Release");
public Action _1000Press = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
if(!one){
// do some thing
one = true;
System.out.println(one);
}
}
};
public Action _1000Release = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
one = false;
System.out.println(one);
}
};
`
当我按下“1”键并按住它时,它会打印: 错误的 真的 错误的 真的 错误的 真的
提前致谢。
【问题讨论】:
-
KeyEvent.VK_1, 0, false与KeyEvent.VK_1, 0, true,不是吗 -
我试过了,但它不起作用不知道为什么:S
标签: java swing key-bindings keystroke