gpt4 book ai didi

java - 使用 fxml 文件和 Controller 在 Java fx 中的场景之间切换

转载 作者:行者123 更新时间:2023-11-30 02:14:17 24 4
gpt4 key购买 nike

在此程序中,我想通过单击按钮在场景之间切换。我在要设置 FXML 加载器位置的行上遇到异常。在其他教程或帖子中,我看到它的完成方式与我相同。我还检查了 fxml 文件的路径一百次。

所以特殊情况是从带有tableViewQuestion.fxml的fxml的QuestionTableViewController切换到带有 Controller UserTableViewController的tableViewUser.fxml。至少我在 MyApplication 中启动了该程序。

因为我的类是可初始化的,所以异常会出现吗?如果是的话,为什么以及如何解决这个问题?或者也许是因为我对 fxml 文件有不同的 Controller ?但为什么以及如何解决这个问题?

现在我问你,我在该程序中的愚蠢错误在哪里?

带有 switchMethod 的 Controller :

public class QuestionTableViewController implements Initializable{
@FXML
TableView<Question> questionTable;
public void changeToUserDatabase() throws IOException {
Scene quizScene = new Scene(FXMLLoader.load(getClass().
getResource("src/view/tableViewUser.fxml")));
Stage primaryStage = (Stage) questionTable.getScene().getWindow();
primaryStage.setScene(quizScene);
primaryStage.show();
}}

启动方法:

public class MyApplication extends Application {

@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("view/tableViewQuestion.fxml"));
primaryStage.setTitle("Database of Century");
primaryStage.setScene(new Scene(root, 750, 500));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}

Here you can see the structure of my Programm

PS:我只是展示了我认为需要的方法,当然我有一个带有 onMouseClick 方法的按钮和我的 tableView 的内容。如果您认为它们可能相关,请提交,我会将其添加到问题中。 :)

最佳答案

问题是您尝试访问错误位置的资源。根据我在 this question 中读到的内容,您应该向上一级目录才能正确访问 fxml 文件。 试试这个:

    Parent root = FXMLLoader.load(getClass().getResource("../view/tableViewQuestion.fxml"));

其中 .. 应指示查看父目录。

编辑:

以上内容在打包的 jar 中不起作用。要轻松解决您的问题,请在 View 包中创建一个类并使用它来加载资源。

例如,在 src/view 中创建类 ViewLoader 并加载 fxml 文件,如下所示:

    Parent root = FXMLLoader.load(ViewLoader.class.getResource("tableViewQuestion.fxml"));

关于java - 使用 fxml 文件和 Controller 在 Java fx 中的场景之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49067498/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com