MouseListener和KeyListener同时使用

时间:2014-02-27 01:37:07

标签: java swing awt keylistener mouselistener

如何同时使用MouseListener和KeyListener?

例如,如何做这样的事情

public void keyPressed( KeyEvent e){
// If the mouse button is clicked while any key is held down, print the key
}

3 个答案:

答案 0 :(得分:2)

使用布尔值来判断是否按下鼠标按钮,然后在MouseListener中更新该变量。

boolean buttonDown = false;

public class ExampleListener implements MouseListener {
    public void mousePressed(MouseEvent e) {
        buttonDown = true;
    }

    public void mouseReleased(MouseEvent e) {
        buttonDown = false;
    }

    //Other implemented methods unimportant to this post... 
}

然后,在KeyListener类中,只测试buttonDown变量。

答案 1 :(得分:1)

尝试创建布尔值isKeyPressed。在keyPressed中,将其设置为true,并在keyReleased中将其设置为false。然后,当单击鼠标时,首先检查isKeyPressed是否为真。

答案 2 :(得分:1)

您可以尝试检查KeyEvent修饰符的状态,例如......

addKeyListener(new KeyAdapter() {
    @Override
    public void keyPressed(KeyEvent e) {
        int mods = e.getModifiers();
        System.out.println(mods);
        if ((mods & KeyEvent.BUTTON1_MASK) != 0) {
            System.out.println("Button1 down");
        }
    }
});

我还应该指出,你可以做......

int ext = e.getModifiersEx();
if ((ext & KeyEvent.BUTTON1_DOWN_MASK) != 0) {
    System.out.println("Button1_down_mask");
}

正如我刚刚发现的那样,为其他鼠标按钮生成结果......