如何使用fx:使用焊接时包含或切换场景

时间:2017-03-14 18:41:48

标签: javafx weld fxmlloader

我正在努力解决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) {
            }
        }
    }
}

它加载第一个屏幕,但后来我尝试将视图切换到另一个与提到的LoginView并排放置的fxml文件,getClass()。getResourceAsStream(" Views / LoginView.fxml&# 34;)返回null。 使用登录视图上的按钮触发第二个视图(MainView)。 我试图在launchJavaFXApplication方法中加载MainView而不是LoginView,它运行正常。

第二个问题:当尝试在使用launchJavaFXApplication方法加载的fxml文件中放置fxml控件(即使是一个非常简单的控件)时,InputStream也为null。

如果缺少某些内容,请询问,如果可以澄清情况,我可以提供更多代码示例。

问候,Bartek

0 个答案:

没有答案