如何在单个场景中检测到多个关键事件?我需要我的程序来检测何时同时按下空格键 和 向右箭头键。
scene.setOnKeyPressed(new EventHandler<KeyEvent>() {
public void handle(KeyEvent ke) {
if (ke.getCode() == KeyCode.RIGHT) {
///
}
if (ke.getCode() == KeyCode.LEFT) {
///
}
if (ke.getCode() == KeyCode.SPACE) {
///
}
if (ke.getCode() == KeyCode.RIGHT && ke.getCode() == KeyCode.SPACE) {
// How??
}
}
});
前三个表达式查找单个键并正常工作。最终表达式永远不会返回true。我相信只有最新的键事件才传递给处理程序。
我查看了KeyCodeCombination,但是这似乎适用于键具有指定列表(ALT_DOWN,SHIFT_DOWN等)中的修饰键的情况。
我可以使用FX中的实用程序吗?
试试这个:
final BooleanProperty spacePressed = new SimpleBooleanProperty(false);
final BooleanProperty rightPressed = new SimpleBooleanProperty(false);
final BooleanBinding spaceAndRightPressed = spacePressed.and(rightPressed);
// How to respond to both keys pressed together:
spaceAndRightPressed.addListener(new ChangeListener<Boolean>() {
@Override
public void changed(ObservableValue<Boolean> obs, Boolean werePressed, Boolean arePressed) {
System.out.println("Space and right pressed together");
}
});
// Wire up properties to key events:
scene.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent ke) {
if (ke.getCode() == KeyCode.SPACE) {
spacePressed.set(true);
} else if (ke.getCode() == KeyCode.RIGHT) {
rightPressed.set(true);
}
}
});
scene.setOnKeyReleased(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent ke) {
if (ke.getCode() == KeyCode.SPACE) {
spacePressed.set(false);
} else if (ke.getCode() == KeyCode.RIGHT) {
rightPressed.set(false);
}
}
});
问题内容: 标题可能有点含糊,所以让我对其定义更好一些。我有一段有效的代码(在下面):我正在开发的游戏的简单主菜单。除“开始”按钮外,其他所有内容均正常运行。 我想要做的是单击“开始”按钮,并在同一阶段(窗口)中出现一个新场景。我不想看到一个新窗口打开。我已经与Java经验丰富的人进行了交谈,他们告诉我为MenuFX和GameFX创建单独的类。如果是这种情况,我需要从MenuFX类中调用GameF
问题内容: 我有一个使用javafx Scene来渲染某些东西的应用程序,并且我想将该渲染结果放入我在Javafx中创建的某些GUI中。我该怎么做? 基本上,有一些容器可以放入场景,然后将其放入GUI。 抱歉,如果是新手问题,我是JavaFX的新手 问题答案: 该场景只有一个顶级父节点作为根。您可以获取它并放入另一个场景。
我创建了一个游戏,我想给它添加一个开始屏幕,我使用FXML添加了它,还添加了两个按钮(开始和退出)。 按下开始按钮后,我希望游戏加载场景并切换到游戏开始。我对如何做有一个粗略的想法,但我有点挣扎,因为我的SampleController类不知道如何启动游戏等,因为所有代码(以及加载初始开始菜单的代码)都在我的主类中,所以我尝试了这样的事情: 我尝试使用一个函数来切换场景,但它不起作用,也试图使用获
}`我正在计划在同一舞台上使不同的部分成为自己的场景。如果有任何帮助,我将不胜感激。我正在使用NetBeans8.2。
如何在场景的控件上循环?我尝试使用getChildrenUnmodifiable(),但它只返回第一级子级。
我正在使用场景构建器2.0,我想让一个按钮在默认情况下被禁用。这是很好的工作,但我想使它启用,如果两个布尔设置为真。在场景构建器中,如何向按钮的状态添加条件? 因此,下面的launchButton方法是单击按钮时将发生的情况。并且checkBox方法中的布尔值应该以某种方式连接到场景构建器。