Как использовать 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.
Если чего-то не хватает, пожалуйста, спросите, и я могу добавить еще несколько примеров кода, если это может прояснить ситуацию.
С уважением, Бартек