任何时候我使用ObjectEvent,其中的每个语句都会执行"方法被调用。使用ActionEvent,如果我从不同的对象中添加单独的操作命令,则会为每个对象调用每个操作命令。同样,使用公共库jnativehook,它利用全局屏幕监听键盘/鼠标。定义了各个常量来描述按下的键盘中的每个键,但每个键都是#34; NativeKeyEvent" (Object事件)尽管有条件语句,但仍执行每个命令。在上下文中:
@覆盖
public void nativeKeyPressed(NativeKeyEvent nativeKeyEvent) {
NativeKeyEvent e = nativeKeyEvent;
Color col;
Piece.TetColor t;
if(e.getKeyCode() == (NativeKeyEvent.VC_SPACE));
{
System.out.println("Space Pressed");
}
if(e.getKeyCode() == NativeKeyEvent.VC_ESCAPE);
{
System.out.println("Escape Pressed");
}
}
这是NativeKeyEvent执行的操作。无论我按什么键,都会打印出来:
Space Pressed
Escape Pressed
我在今年早些时候遇到过ActionEvents及其事件命令时遇到的这个问题,但是我为每个我想要处理的案例编写了单独的匿名类。我非常困惑,并希望得到任何可能的帮助。
答案 0 :(得分:0)
你的方法中有一个简单的拼写错误。 if语句后应该没有分号(;
)。通过在其中放置一个分号,后面的println
语句不再是if语句的一部分。
改为使用:
if(e.getKeyCode() == NativeKeyEvent.VC_SPACE)
System.out.println("Space Pressed");
else if(e.getKeyCode() == NativeKeyEvent.VC_ESCAPE)
System.out.println("Escape Pressed");
或者:
switch(e.getKeyCode()) {
case NativeKeyEvent.VC_SPACE:
System.out.println("Space Pressed"); break;
case NativeKeyEvent.VC_ESCAPE:
System.out.println("Escape Pressed"); break;
}