当前位置: 首页 > 知识库问答 >
问题:

如何在Swing应用程序中运行Javafx Stage/Scene?

劳和雅
2023-03-14

我有一个swing应用程序,需要在其中运行和打开JavaFX场景/阶段。我必须在没有扩展应用程序的情况下运行它。我已经尝试了Stackoverflow上发布的大多数解决方案,但没有一个在我的情况下有效。

这是我的最新尝试,我正在获得NullPointerException。我的舞台变空了。此行->[stage.setscene(new Scene(root,SCENEWIDTH,SCENEHEIGHT));]

case ADMIN:
      new JFXPanel();
            Platform.runLater(new Runnable() {
                @Override
                public void run() {
                    try {
                        FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/AdminView.fxml"));
                        Parent root = loader.load();
                        stage.setScene(new Scene(root, SCENEWIDTH, SCENEHEIGHT));
                        // Give the controller access to the main app
                        AdminController controller = loader.getController();
                        controller.setMainApp();
                        stage.show();
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });

break;

共有1个答案

伍溪叠
2023-03-14

不要在Swing应用程序中使用stage;相反,使用JFrame并使用JFXPanel将JavaFX内容嵌入其中:

case ADMIN:

    // I'm assuming this code is on the AWT Event Dispatch thread

    JFrame window = new JFrame();
    JFXPanel jfxPanel = new JFXPanel();
    Platform.runLater(() -> {

        try {
            FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/AdminView.fxml"));
            Parent root = loader.load();
            jfxPanel.setScene(new Scene(root, SCENEWIDTH, SCENEHEIGHT));
            // Give the controller access to the main app
            AdminController controller = loader.getController();
            controller.setMainApp();

            SwingUtilities.invokeLater(() -> {
                window.add(jfxPanel);
                window.pack();
                window.setVisible(true);
            });

        } catch (Exception e) {
            e.printStackTrace();
        }

    });

break;
 类似资料:
  • 我正在尝试使用Windows中的docker工具箱运行自定义java swing GUI。我现在想要容器化这个应用程序,但是得到以下错误: 我正在运行一个DockerFile。设置为: 3)复制到包含JAR的文件夹上 4)运行docker容器,该容器将启动GUI(不是linux前端,最好不使用vnc)。 我将Xlaunch用于windows上的终端,并且能够使用它在docker上启动一个firef

  • 问题内容: 我有一个Swing应用程序,我希望将其从意大利面条转换为对Guice使用依赖项注入。使用Guice提供诸如配置和任务队列之类的服务的过程非常好,但是我现在是从应用程序的GUI开始的,不确定如何进行。 该应用程序基本上是,在中带有一堆标签。每个选项卡都是一个单独的子类,该子类列出了各种组件,并且需要服务才能在按下某些按钮时执行操作。 在当前应用程序中,这看起来像这样: 显然,这并不完全遵

  • 问题内容: 我试图找到有关如何使用Maven来构建和运行Swing应用程序的信息,但找不到任何有用的东西(Maven文档很乱)。 有人可以指出我相关文件吗?有人在Swing开发中使用Maven吗? 问题答案: 我猜您想从maven命令运行您的应用程序。您可以使用exec插件,如下所示: 您可能还需要在pom中使用它。 实际的配置可能会有所不同,具体取决于您最终使用的exec插件的版本- 我在某些版

  • 问题内容: 我正在开发Java Swing应用程序,但也希望将JavaFX与Swing一起使用。是否有任何资源可以告诉您如何执行此操作? 问题答案: 看这里。简而言之,现在可以将JavaFX嵌入到Swing中,并且可以通过JFXPanel支持,但是不支持其他方向。

  • 问题内容: 是否有隐藏光标的方法(除了使用透明图像作为光标以外)? 问题答案: 似乎该类没有开始的“空白”游标,因此可以使用该方法定义一个新的“空白”游标。 这是我尝试过的一种可行的方法: 编辑 关于结尾处没有游标的所有注释,似乎包含在中的s 最终将继承容器的游标(),因此如果要求一定要让游标出现,则必须手动设置所需的光标。 例如,如果中包含,则可以使用方法将其光标设置为系统的默认值:

  • 问题内容: 对于这个问题,我实际上并没有太多的摆动或GUI设计方面的经验(大学中的一些WPF应用程序的水平差不多),但是我的任务是在工作中重构摆动旧式应用程序的一部分。 我被要求重构的部分围绕一个弹出窗口,该窗口可以根据特定的值对象以三种不同的格式显示。这3种不同的格式都共享一些基本字段,然后有条件地确定其他字段。负责此GUI元素的类的长度约为5k,我当时认为应该将其分为三个子类,并在基类中共享这