控制键的键绑定不起作用

问题描述 投票:0回答:1

我有一个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起作用但释放不起作用,有什么想法吗?

java swing jpanel key-bindings keyevent
1个回答
0
投票

更新,我发现我认为是解决问题的最佳解决方案,鼠标事件存储了天气或控件未按下,因此无需使用keysListeners或绑定键进行任何操作。这是代码行(如果有人需要)

© www.soinside.com 2019 - 2024. All rights reserved.