Java扫雷程序左右键同时按下的问题
怎么让程序判断两个键按下的时候??我写了好多代码想实现但是出来都是编译没问题但是执行的时候不执行。lseif(e.getModifiersEx()==(e.BUTTON3...
怎么让程序判断两个键按下的时候??我写了好多代码想实现但是出来都是编译没问题但是执行的时候不执行。
lse if(e.getModifiersEx()==(e.BUTTON3_DOWN_MASK + e.BUTTON1_DOWN_MASK))
我用的是这个函数,但是为什么不被执行呢? 展开
lse if(e.getModifiersEx()==(e.BUTTON3_DOWN_MASK + e.BUTTON1_DOWN_MASK))
我用的是这个函数,但是为什么不被执行呢? 展开
展开全部
改成
int onmask = e.BUTTON1_DOWN_MASK | e.BUTTON3_DOWN_MASK;
if ((e.getModifiersEx() & onmask) == onmask) {
System.out.println("ok");
}
API文档:
getModifiersEx
public int getModifiersEx()
返回此事件的扩展修饰符掩码。扩展修饰符表示所有模式键的状态,例如 ALT、CTRL、META 和事件发生后那一刻的鼠标按钮
例如,如果用户在按下 button 1 后又按下 button 2,然后以相同的顺序释放这两个按钮,则会生成以下事件序列:
MOUSE_PRESSED: BUTTON1_DOWN_MASK
MOUSE_PRESSED: BUTTON1_DOWN_MASK | BUTTON2_DOWN_MASK
MOUSE_RELEASED: BUTTON2_DOWN_MASK
MOUSE_CLICKED: BUTTON2_DOWN_MASK
MOUSE_RELEASED:
MOUSE_CLICKED:
建议不使用 == 来比较此方法的返回值,因为在以后会增加新的修饰符。例如,检查 SHIFT 和 BUTTON1 已经按下而 CTRL 未按下的正确方法可以通过以下代码来演示:
int onmask = SHIFT_DOWN_MASK | BUTTON1_DOWN_MASK;
int offmask = CTRL_DOWN_MASK;
if (event.getModifiersEx() & (onmask | offmask) == onmask) {
...
}
即使添加了新的修饰符,上述代码仍然有效。
从以下版本开始:
1.4
int onmask = e.BUTTON1_DOWN_MASK | e.BUTTON3_DOWN_MASK;
if ((e.getModifiersEx() & onmask) == onmask) {
System.out.println("ok");
}
API文档:
getModifiersEx
public int getModifiersEx()
返回此事件的扩展修饰符掩码。扩展修饰符表示所有模式键的状态,例如 ALT、CTRL、META 和事件发生后那一刻的鼠标按钮
例如,如果用户在按下 button 1 后又按下 button 2,然后以相同的顺序释放这两个按钮,则会生成以下事件序列:
MOUSE_PRESSED: BUTTON1_DOWN_MASK
MOUSE_PRESSED: BUTTON1_DOWN_MASK | BUTTON2_DOWN_MASK
MOUSE_RELEASED: BUTTON2_DOWN_MASK
MOUSE_CLICKED: BUTTON2_DOWN_MASK
MOUSE_RELEASED:
MOUSE_CLICKED:
建议不使用 == 来比较此方法的返回值,因为在以后会增加新的修饰符。例如,检查 SHIFT 和 BUTTON1 已经按下而 CTRL 未按下的正确方法可以通过以下代码来演示:
int onmask = SHIFT_DOWN_MASK | BUTTON1_DOWN_MASK;
int offmask = CTRL_DOWN_MASK;
if (event.getModifiersEx() & (onmask | offmask) == onmask) {
...
}
即使添加了新的修饰符,上述代码仍然有效。
从以下版本开始:
1.4
参考资料: http://www.gznc.edu.cn/yxsz/jjglxy/book/Java_api/java/awt/event/InputEvent.html#getModifiersEx%28%2
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询