创建的所有ObjectEvents共享相似的源信息?

时间:2015-10-27 16:24:39

标签: java events

任何时候我使用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及其事件命令时遇到的这个问题,但是我为每个我想要处理的案例编写了单独的匿名类。我非常困惑,并希望得到任何可能的帮助。

1 个答案:

答案 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;
}