【问题标题】:Is there a way to load user generated fxml? [closed]有没有办法加载用户生成的 fxml? [关闭]
【发布时间】:2019-09-03 22:20:31
【问题描述】:

我想为工作表文档创建类似场景构建器的东西,并且想知道如何允许我的用户使用自定义组件。

为此,我想导入我的用户创建的 fxml 文件,并在我的场景中渲染其中定义的控件。假设它们是正确的 fxml,有没有办法将任意 fxml sn-ps 作为控件/视图加载?

所以我会编写我的应用程序并附带一些组件,人们可以从他们的文件系统中选择 fxml 文件以将其添加到他们的工作表中(例如数独框架或便笺行)

将随机 fxml sn-ps 导入视图(假设是一个简单的窗格)并正确呈现它们的代码是什么样的? fxml 必须满足哪些先决条件才能正常工作?

【问题讨论】:

  • Scenebuilder 提供了一个开源工具包,可以更轻松地将其一些逻辑集成到其他应用程序中,您可以查看scene builder source 中的kit 目录,了解它是如何执行任务的您感兴趣,但是,取决于您想要做什么,对于您需要的功能来说,它可能会也可能不会过大。
  • @jewelsea 将整个场景构建器集成到我的项目中。我只想将 fxml sn-ps 转换为可以放置在父容器(如窗格)上/中的视图
  • 不确定这会有多大用处。没有控制器(或至少是非平凡的控制器)的窗口窗体不会做任何事情。最好有一个更简单的 xml 描述一个简单的数据请求表单并将其作为输入。
  • 它不一定是交互式组件,因为大多数功能都围绕着将场景打印到纸上以供学生工作表使用。
  • 这个问题应该重新打开。根据问题的当前编辑,它并不太宽泛。具体的问题是:“将随机 fxml sn-ps 导入视图(假设是一个简单的窗格)并正确呈现它们的代码是什么样的?fxml 必须满足哪些先决条件才能使其工作?”非常具体,适用于 StackOverflow 问题。答案需要最少的代码来演示第一部分,问题第二部分的答案(关于它工作的先决条件)可能对其他人非常有用。

标签: java javafx fxml fxmlloader


【解决方案1】:

查看FXMLLoader 的文档。您可以使用 load(InputStream) Method 加载 FXML 文件。

InputStream 可以是任何东西 - 类路径中的资源、本地 FileSystem 上的文件、http(s) 资源……

【讨论】:

  • 但它不是必须连接控制器吗?
  • @Daniel 我进行了一些测试。如果您在 FXML 中定义了任何 controller method event handlers,例如 onAction="#buttonAction",那么您需要一个关联的控制器,其中定义了事件处理程序。如果您没有在 FXML 中定义任何这样的事件处理程序,则 FXMLLoader 可以在没有任何关联控制器的情况下加载 FXML(只是不要在 FXML 中定义 fx:controller="com.foo.MyController" 元素)。
猜你喜欢
  • 1970-01-01
  • 2012-05-17
  • 1970-01-01
  • 2012-03-11
  • 2011-09-09
  • 2021-03-07
  • 2020-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多