【发布时间】:2018-08-10 13:44:08
【问题描述】:
在这个程序中,我想通过按钮单击在场景之间切换。我在要设置 FXML 加载器位置的行上遇到异常。在其他教程或帖子中,我看到它以与我相同的方式完成。我还检查了 fxml 文件的路径一百次。
所以特殊情况是从带有tableViewQuestion.fxml的fxml的QuestionTableViewController切换到带有Controller UserTableViewController的tableViewUser.fxml。至少我在 MyApplication 中启动程序。
该异常是否会到达,因为我的类是可实现初始化的?如果是,为什么以及如何解决这个问题? 或者可能是因为我对 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 的内容。如果您认为它们可能相关,请提交,我将在问题中添加。 :)
【问题讨论】:
-
a)
src是包含源文件的目录。它不是包结构的一部分。 b)您使用的路径是相对于类的包的。您正在寻找位于/controller/src/view/tableViewUser.fxml的资源,您应该使用正确的绝对路径:/view/tableViewUser.fxml -
感谢,但它也不适用于仅 /view/tableViewUser.fxml
标签: java user-interface javafx java-8