我有一个基于 Java SDK 的 WorldWind 应用程序构建。它有一个很棒的事件处理程序,用于检测您何时单击对象,但我遇到了障碍。虽然我可以单击并选择单个对象,但我无法确定用户在单击时是否按下了控制键(如果他们想选择多个对象)。我可以为鼠标和键盘实现事件处理程序,但我一生都无法弄清楚如何将两者联系在一起。如何让我的鼠标侦听器轮询系统以获取当前按下的键的列表?
问问题
697 次
2 回答
5
您可以调用 getModifiers() 并按位比较以查看在事件期间是否按下了控制键(或 shift 键。
public void mouseClicked( MouseEvent e ) {
if( ( e.getModifiers() & ActionEvent.CTRL_MASK ) > 0 ) {
// Control key depressed
}
}
于 2010-04-12T20:01:21.947 回答
1
对于 MouseEvent ,您可以调用 getModifiers()来获取按下的修饰键(shift/control/alt 等)键的掩码。
对于一般情况,使用变量将它们联系在一起?
您的键处理程序在注册按键时设置/清除变量,您的鼠标侦听器检查该变量。
如果您需要更多地解耦这些,只需创建一个您的键侦听器和鼠标侦听器都可以访问的实例。
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(..);
于 2010-04-12T20:03:27.003 回答