JavaFX открытый ресурс в директории брата - PullRequest
0 голосов
/ 28 августа 2018

Я пытаюсь структурировать свой проект так, чтобы у меня не было всех источников для моего приложения в одной папке, но у меня возникла проблема с загрузкой файла fxml.

Структура моего проекта

-Project
    -MainMenu
        -MainMenu.fxml
        -MainMenuController.java
    -ChildMenu
        -ChildMenu.fxml
        -ChildMenuController.java

Я не могу загрузить мой ChildMenu.fxml файл из моего MainMenuController.java класса. Это то, что я пробовал

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

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

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

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

Parent root = FXMLLoader.load(getClass().getResource("ChildMenu.fxml"));

Я также пытался выполнить поиск переполнения стека и Google, но не нашел решения этой проблемы.

Вот изображение того, с чем я работаю, я упростил свой вопрос выше, но, похоже, это не помогает.

enter image description here

NetBeans собирает проект во временный Jar-файл, поэтому использование полного пути должно работать, но в настоящее время его нет, если вы видите, что результат сборки / запуска полного пути к тому месту, где система говорит, что я

C:\Users\Tyler\Documents\NetBeansProjects\InventoryManagementUI

Но если вы на самом деле смотрите журналы сборки, то там написано, что он собрал / запустил jar в C:\Users\Tyler\Documents\NetBeansProjects\InventoryManagementUI\dist\run96470141\InventoryManagementUI.jar

Я, должно быть, упускаю что-то очевидное.

Просто для полноты вот мой метод openWindow

   public void openWindow(String window, Stage stage) {
    try {

        Parent root = FXMLLoader.load(getClass().getResource(window));
        Scene scene = new Scene(root);

        System.out.println("Show scene");
        stage.initModality(Modality.APPLICATION_MODAL);
        stage.setScene(scene);
        stage.show();
    } catch (Exception e) {
        System.out.println("Failed to open new window: " + e.getMessage());
        e.printStackTrace();
    }
}

1 Ответ

0 голосов
/ 28 августа 2018

Исправление должно было начаться в начале пути к классу с косой чертой вперед, например:

 Parent root = FXMLLoader.load(getClass().getResource("/inventorymanagementui/AddPartMenu/AddPartMenu.fxml"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...