在Java中按下按钮的轮询
问题描述:
我有一个基于Java SDK的WorldWind应用程序构建。它有一个很棒的事件处理程序来检测你什么时候点击对象,但我碰到了一个障碍。虽然我可以点击并选择单个对象,但我无法确定用户是否在点击时按下了控制键(如果他们想要选择多个对象)。我可以为鼠标和键盘实现事件处理程序,但是我无法想象如何将两者结合在一起。我怎么能让我的鼠标监听器轮询系统当前被按下的键列表?在Java中按下按钮的轮询
答
你可以叫getModifiers()和按位比较,看是否控制键(或Shift键,在活动期间郁闷。
public void mouseClicked(MouseEvent e) {
if((e.getModifiers() & ActionEvent.CTRL_MASK) > 0) {
// Control key depressed
}
}
答
对于的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(..);
你已经打了我,并与实际的代码。 +1 – 2010-04-12 20:03:33