【发布时间】:2022-02-02 06:49:37
【问题描述】:
在我的应用程序中,有两个场景:mainScene 和bossScene,其中mainScene 用于启动应用程序。
-
我正在尝试实现老板键功能,通过按键盘上的“b”键应将场景更改为
bossScene。并且按下bossScene中的按钮应该切换回mainScene。我在 InteliJ 上收到一条错误消息,提示“无法解析列表中的方法
setOnKeyPressed
我的代码:
public void start(Stage stage) throws Exception {
stage.setTitle("BossKey Example");
// Scene and layout for the main view
VBox root = new VBox();
Scene mainScene = new Scene(root, 500, 300);
// Scene for the BOSS view
Scene bossScene = new Scene(new Label("Nothing suspicious here"), 500, 300);
List<TextField> fields = new ArrayList<TextField>();
for (int i = 0; i < 10; i++) {
fields.add(new TextField());
}
fields.setOnKeyPressed(new EventHandler<KeyEvent>() {
@Override
public void handle(KeyEvent keyEvent) {
switch (keyEvent.getCharacter()){
case "b": stage.setScene(bossScene); break;
}
}
});
/////// 添加了addEventFilter,还是不行
mainScene.addEventFilter(KeyEvent.KEY_PRESSED, new
EventHandler<KeyEvent() {
@Override
public void handle(KeyEvent keyEvent) {
switch (keyEvent.getCharacter()){
case "b": stage.setScene(bossScene); break;
}
keyEvent.consume();
}
});
// Create components for main view
root.getChildren().addAll(fields);
root.getChildren().add(new Button("Hello!"));
stage.setScene(mainScene);
stage.show();
}
}
【问题讨论】:
-
mainScene.setOnKeyPressed(…) -
@James_D 我也试过了,但是它没有显示错误,按下它永远不会工作。
-
尝试添加一个事件过滤器。文本字段可能正在使用该事件。
-
mainScene.addEventFilter(KeyEvent.KEY_PRESSED, new EventHandler<KeyEvent>() { @Override public void handle(KeyEvent keyEvent) { switch (keyEvent.getCharacter()){ case "b": stage.setScene(bossScene); break; } keyEvent.consume(); } });但还是没有得到输出 -
阅读有关 java 基础知识的教程,以便您了解错误消息。然后修复它。如果遇到问题,请提供 minimal reproducible example 说明问题所在
标签: javafx