Как использовать FX: включить или переключить сцену при использовании сварки

Я борюсь с проблемой сварки javafx +.

Я создаю приложение, которое должно переключать сцены / представления. Приложение использует сварочный CDI.

Я пробовал несколько подходов, и ни один из них не работает. В настоящее время мое приложение основано на решении по этой ссылке https://dzone.com/articles/fxml-javafx-powered-cdi-jboss.

Этот метод (скопированный из упомянутого решения) работает просто отлично.

public void launchJavaFXApplication(@Observes @StartupScene Stage s) {
    mainStage = s;

    InputStream is = null;

    try {
        is = getClass().getResourceAsStream("Views/LoginView.fxml");
        Parent root = (Parent) fxmlLoader.load(is);
        s.setTitle("Login");
        s.setScene(new Scene(root, 900, 600));
        s.show();
    } catch (IOException e) {
        throw new IllegalStateException("cannot load FXML login screen", e);
    } finally {
        if (is != null) {
            try {
                is.close();
            } catch (IOException e) {
            }
        }
    }
}

Он загружает первый экран, но затем я пытаюсь переключить представление на другой fxml-файл, который расположен рядом с упомянутым LoginView, getClass(). GetResourceAsStream("Views/LoginView.fxml") возвращает null. Второй вид (MainView) запускается с помощью кнопки в представлении входа в систему. Я пытался загрузить MainView вместо LoginView в методе launchJavaFXApplication, и он работает просто отлично.

Вторая проблема: при попытке поместить элемент управления fxml (даже очень простой без контроллера) в файл fxml, загруженный с помощью метода launchJavaFXApplication, InputStream также имеет значение null.

Если чего-то не хватает, пожалуйста, спросите, и я могу добавить еще несколько примеров кода, если это может прояснить ситуацию.

С уважением, Бартек

0 ответов

Другие вопросы по тегам