当前位置: 首页 > 知识库问答 >
问题:

为什么我的场景在更改场景(JavaFX)时不弹出?

郝承悦
2023-03-14

我在第一个场景上有一个简单的按钮,应该会导致第二个场景。当我点击按钮时,它改变场景,但只显示一个空白屏幕。如果我关闭原始舞台,然后显示一个包含新场景的新舞台,它会正常工作,但我不想打开一个新窗口。

这是我的控制器类:

public class TitleController implements Initializable {

    @FXML
    private Button startButton;

    @Override
    public void initialize(URL location, ResourceBundle resources) {

    }

    //When next/start/main buttons are clicked, transition scene
    public void transitionScenes() throws IOException{
        Stage stage;
        Stage newStage;
        Parent root;
        stage = (Stage) startButton.getScene().getWindow();
        root = FXMLLoader.load(getClass().getResource("Round_1.fxml"));
        Scene scene = new Scene(root);
        stage.setScene(scene);
        stage.show();
    }
}   

主类:

public class Main extends Application{

public void start(Stage primaryStage) throws Exception{
    Parent root =   FXMLLoader.load(getClass().getResource("/fxml/Title_Screen.fxml"));
    Scene scene = new Scene(root);
    primaryStage.setScene(scene);
    primaryStage.show();
}

public static void main(String[] args) {
    launch(args); 
}
}

共有1个答案

庄弘业
2023-03-14

它对我有用,当我像这样切换场景时:

public class TestApp extends Application {

    @Override
    public void start(Stage primaryStage) throws IOException {

        Button btnChangeScene = new Button("change scene");
        Button btnChangeSceneBack = new Button("change sceneBack");

        btnChangeScene.setOnAction(e -> {
            StackPane root = new StackPane(btnChangeSceneBack);
            root.setStyle("-fx-background-color: orange");
            Scene scene = new Scene(root, 300, 300);
            Stage stage = (Stage) btnChangeScene.getScene().getWindow();
            stage.setScene(scene);
        });


        StackPane root = new StackPane(btnChangeScene);
        Scene scene = new Scene(root, 300, 300);

        btnChangeSceneBack.setOnAction(e -> {
            primaryStage.setScene(scene);
        });

        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
 类似资料:
  • }`我正在计划在同一舞台上使不同的部分成为自己的场景。如果有任何帮助,我将不胜感激。我正在使用NetBeans8.2。

  • 问题内容: 我有一个使用javafx Scene来渲染某些东西的应用程序,并且我想将该渲染结果放入我在Javafx中创建的某些GUI中。我该怎么做? 基本上,有一些容器可以放入场景,然后将其放入GUI。 抱歉,如果是新手问题,我是JavaFX的新手 问题答案: 该场景只有一个顶级父节点作为根。您可以获取它并放入另一个场景。

  • 我是JavaFX的新手。我有我的主要场景和次要场景;当我从第一个场景切换到第二个场景时,窗口的条形图变得可见。我该怎么解决呢?

  • 所以基本上我想做的是改变我的场景的一部分。我想保持一个静态菜单栏在顶部,只改变底部的部分根据哪个菜单按钮正在被点击。这意味着每个“页面”都需要不同的FXML文件和控制器类。 看看可用的JavaFX特性,我认为SubScene可以完成这项工作。但经过进一步的调查,似乎子场景是为3D东西制作的?所以我真的不知道我该做什么。 任何帮助都将不胜感激!

  • 我创建了一个游戏,我想给它添加一个开始屏幕,我使用FXML添加了它,还添加了两个按钮(开始和退出)。 按下开始按钮后,我希望游戏加载场景并切换到游戏开始。我对如何做有一个粗略的想法,但我有点挣扎,因为我的SampleController类不知道如何启动游戏等,因为所有代码(以及加载初始开始菜单的代码)都在我的主类中,所以我尝试了这样的事情: 我尝试使用一个函数来切换场景,但它不起作用,也试图使用获