控制释放的键绑定不起作用
Key bindings for control release not working
我有一个 JPanel,我需要检查是否按下了控件,以便用户可以 select 在屏幕上显示多个内容,我遇到了使用按键侦听器的问题,所以经过研究我发现我应该使用键绑定,我终于让它可以用于按下控制,但我无法让它用于释放控制
'''
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 或绑定键执行任何魔法。这是代码行,如果有人需要的话
'''
public void mousePressed(MouseEvent e){
e.isControlDown();
}
'''
我有一个 JPanel,我需要检查是否按下了控件,以便用户可以 select 在屏幕上显示多个内容,我遇到了使用按键侦听器的问题,所以经过研究我发现我应该使用键绑定,我终于让它可以用于按下控制,但我无法让它用于释放控制 '''
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 或绑定键执行任何魔法。这是代码行,如果有人需要的话
'''
public void mousePressed(MouseEvent e){
e.isControlDown();
}
'''