我有一个JPanel,需要检查是否按下了该控件,以便用户可以在屏幕上选择多个内容。我遇到了使用按键侦听器的问题,因此在研究之后,我发现我应该使用按键绑定,最后我将其用于按下控制键,但无法将其用于释放控制键'''
getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_CONTROL,
InputEvent.CTRL_DOWN_MASK), "press");
getActionMap().put("press", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
controlPressed = true;
}
});
getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.CTRL_DOWN_MASK
,InputEvent.CTRL_DOWN_MASK,true), "release");
getActionMap().put("release", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("release");
controlPressed = false;
}
});
'''
所以按ctrl起作用但释放不起作用,有什么想法吗?
更新,我发现我认为是解决问题的最佳解决方案,鼠标事件存储了天气或控件未按下,因此无需使用keysListeners或绑定键进行任何操作。这是代码行(如果有人需要)