在Java中按下按钮的轮询

在Java中按下按钮的轮询

问题描述:

我有一个基于Java SDK的WorldWind应用程序构建。它有一个很棒的事件处理程序来检测你什么时候点击对象,但我碰到了一个障碍。虽然我可以点击并选择单个对象,但我无法确定用户是否在点击时按下了控制键(如果他们想要选择多个对象)。我可以为鼠标和键盘实现事件处理程序,但是我无法想象如何将两者结合在一起。我怎么能让我的鼠标监听器轮询系统当前被按下的键列表?在Java中按下按钮的轮询

你可以叫getModifiers()和按位比较,看是否控制键(或Shift键,在活动期间郁闷。

public void mouseClicked(MouseEvent e) { 
    if((e.getModifiers() & ActionEvent.CTRL_MASK) > 0) { 
    // Control key depressed 
    } 
} 
+0

你已经打了我,并与实际的代码。 +1 – 2010-04-12 20:03:33

对于的MouseEvent,你可以只调用getModifiers()得到一个面具的修饰键(换档/控制/ ALT等)按下的键。

对于一般情况下,使用一个变量,以配合在一起?

你keyhandler套/清除变量时它注册一个按键,你的mouselistener检查t帽子变量。

如果您需要更多地删除这些内容,只需创建一个您的密钥监听器和mouselistener访问的实例即可。

public class Pressedkeys { 
    private boolean shiftPressed = false; 
    private boolean controlPressed = false; 
    public void setShiftPressed(boolean pressed) { 
    this.shiftPressed = pressed; 
    } 
    public void setControlPressed (boolean pressed) { 
    this.shiftPressed = pressed; 
    } 
public boolean isControlPresed() { 
    return controlPressed ; 
    } 
    ... 
} 

Pressedkeys k = new PressedKeys(); 
MyMouseThing t = new MyMouseThing(k); 
//your mousething mouse handler would check k.isControlPressed(); 
MyKeyboardThing t = new MyKeyboardThing (k); 
//your KeyBoardThing - which has a key handler would set k.setControlPressed(..);