我正在尝试将eventHandler添加到场景中以进行键盘侦听(上下键在Javafx应用程序中移动对象)。
我尝试将这个处理程序添加到initialize()的场景中,但是(如预期的那样)获得了NullPointerException。现在,我试图在以initialize()启动的线程中实现我的目标。
keyEventEventHandler = (keyEvent -> {
switch (keyEvent.getCode()) {
case DOWN:
moveRectangle(player1, 20.0, panePlayer1);
break;
case UP:
moveRectangle(player1, 10.0, panePlayer1);
break;
}
});
Task task_keyboard = new Task() {
@Override
protected Object call() throws Exception {
System.out.println("keyboard thread active");
Scene scene = null;
while(scene == null){
scene = pane.getScene();
System.out.println(scene);
Thread.sleep(100);
}
scene.setOnKeyPressed(keyEventEventHandler);
System.out.println("event added");
return null;
}
};
new Thread(task_keyboard).start();
现在在控制台中,我仅收到消息“键盘线程处于活动状态”,而没有其他消息。背后的原因是什么?完全是添加该处理程序的好方法吗?