使用KeyListeners和MouseListeners切换布尔值

时间:2017-06-21 21:28:09

标签: java

我正在编写一个简单的程序来练习我的GUI技能,但我遇到了一个问题。我希望我的程序在按下ALT键时执行某些操作,然后单击鼠标。我有一个在keyPressed方法中设置为TRUE的布尔值,在keyReleased方法中设置为FALSE。当我调用mouseClicked方法时,布尔值为FALSE,即使它被键方法设置为TRUE也是如此。

这是keyListener的代码:

  private boolean altPressed;

        //......

    @Override
        public void keyPressed(KeyEvent e) {

        int keyCode = e.getKeyCode();

        if(keyCode == KeyEvent.VK_ALT){
            altPressed = true;
            System.out.println("ALT pressed. ALT: "+altPressed);
        }

    }

    @Override
    public void keyReleased(KeyEvent e) {

        int keyCode = e.getKeyCode();

        if(keyCode == KeyEvent.VK_ALT){
            altPressed = false;
            System.out.println("ALT released. ALT: "+altPressed);
        }
    }

和MouseListener代码:

@Override
    public void mouseClicked(MouseEvent e) {

        int keyCode = e.getButton();

        if(keyCode == MouseEvent.BUTTON1){
            System.out.println("MOUSE button 1 pressed. ALT: "+altPressed);

        }

    }

控制台输出(带一些评论)

ALT pressed. ALT: true               //I'm pressing and holding ALT
ALT pressed. ALT: true
MOUSE button 1 pressed. ALT: false   //Clicking the mouse
ALT pressed. ALT: true
ALT pressed. ALT: true
ALT released. ALT: false             //releasing ALT

为什么布尔值为false,即使它被KeyListener方法设置为true?希望我不会错过任何非常明显的事情。谢谢你的帮助!

0 个答案:

没有答案