在这个程序中,我想通过按钮点击在场景之间切换。我想在设置FXML加载器的位置的行上得到一个例外。在其他教程或帖子中,我看到它的完成方式与我做的相同。我还检查了fxml文件的路径一百次。
因此,特殊情况是使用Controller UserTableViewController将QuestionTableViewController与tableViewQuestion.fxml的fxml切换到tableViewUser.fxml。至少我在MyApplication中启动了Programm。
该异常是否会到来,因为我的类是实现可初始化的?如果是,为什么以及如何解决这个问题? 或者也许是因为我对fxml文件有不同的控制器?但为什么以及如何解决这个问题?
所以现在我问你,那个程序在我的愚蠢错误在哪里?
带switchMethod的控制器:
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);
}
}
PS:我只是展示我认为需要的方法,当然我有一个带有onMouseClick方法的按钮和我的tableView的内容。如果您认为它们可能相关,请提交,我将在问题中添加它。 :)
答案 0 :(得分:2)
问题是您尝试在错误的位置访问资源。根据我在this question中读到的内容,您应该在一个目录中正确访问fxml
文件。
试试这个:
Parent root = FXMLLoader.load(getClass().getResource("../view/tableViewQuestion.fxml"));
..
应指示查看父目录。
编辑:
以上内容不适用于打包的jar。要轻松解决您的问题,请在views包中创建一个类并使用它来加载资源。
例如,在ViewLoader
中创建课程src/view
并加载fxml
文件,如下所示:
Parent root = FXMLLoader.load(ViewLoader.class.getResource("tableViewQuestion.fxml"));