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

JavaFX场景生成器-在Swing中使用JFXPanel时可用吗

印飞捷
2023-03-14

我在Swing应用程序中使用JavaFX,带有JFXPanel。我一直在使用css文件手动编码JavaFXUI。我正在使用NetBeans 8.1。

我想知道,在这种情况下,我可以使用JavaFX场景生成器生成UI吗?好的,输出是代表UI组件的FXML文件。这与JFXPanel使用JavaFX的方式兼容吗?

谢谢

共有1个答案

蔺霄
2023-03-14

如果您想在Scene Builder中管理JFXBoard本身和Swing组件,那么简短的答案是“否”。

从纯实用的角度来看,SceneBuilder不支持Swing组件,这是您将要添加到JFXPanel中的组件。

另一个问题与线程有关。场景生成器只生成FXML。FXML由FXMLLoader通过其加载(…)之一加载 方法。该方法必须在单个线程上执行。如果混合使用Swing组件和JavaFX组件,则必须按照JFXPanel文档中的描述适当地管理线程。由于无法告诉FXMLLoaderFXML的哪些部分要在JavaFX应用程序线程上处理,哪些部分要在AWT事件调度线程上处理,因此无法加载描述Swing和JavaFX组件组合的FXML文件,这两个组件都遵守这两个工具包的线程规则。

显然,您可以使用Scene Builder来管理JFXGroup的内容;这与Scene Builder的“常规”用法相同。同样,Scene Builder所做的只是生成FXML,而FXML只是对要创建的对象以及它们如何相互关联的描述。所以你可以这样做

private JFXPanel jfxPanel ;

// build Swing components, initialize jfxPanel, etc

// run on FX Application Thread:
private void initFX() {

    FXMLLoader loader = new FXMLLoader(getClass().getResource("/path/to/fxml/file"));
    Parent root = loader.load();
    Scene scene = new Scene(root);
    jfxPanel.setScene(scene);
}

 类似资料:
  • 关于如何自定义这样的值,有什么建议或想法吗?

  • 我正在用java开发一个聊天机器人项目,在GUI中我使用JavaFX、IDE eclipse和scene builder 8.4.1。 我在向文本区域添加背景图像时遇到问题。这是我所做的一个屏幕截图,它什么也没有显示(甚至没有错误)。 以下是场景生成器生成的fxml代码:

  • 我希望此图表显示在场景生成器上。怎么可能。。??

  • 问题内容: 我刚遇到JavaFX和Swing的怪异之处。 处置已添加到JFrame或JPanel的JavaFX Panel时,重新添加新的JFXPanel将引发IllegalStateException:“已调用Platform.exit”。 就我而言,这是在我删除了一些内部带有JFXPanels的JPanels,然后尝试重新添加它们之后发生的。 问题答案: 幸运的是,我在Oracle论坛上找到了

  • 如何将JavaFX中的线程与FXML以及任务或服务类一起使用? 我在我的程序中需要并发,因为我使用了一个很长的循环。如果我“手动”(没有FXML)编写这个代码,那么它就可以工作。但使用FXML它不起作用(JavaFX Scene Builder)。而不是在控制台中打印出“字符串缓冲区”变量,我想把它写在文本区域(这是一个可更新的组件)中。但在这种情况下,当然会出现错误消息,因为它不再属于JavaF

  • 我对屏幕生成器有一些问题 对于某些fxml,它会在加载后发生creash。我尝试了很多次运行它,但它阻塞了,我必须终止这个进程。 fxml正常,内容在我的应用程序中正确显示。下面是导致场景生成器崩溃的FXML示例。