问题标签 [fxmlloader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1632 浏览

java - 从控制器文件调用 FXML 文件

我只是面临一个问题,用 JavaFX 实现一个完整的 MVC 模型。我在带有拆分窗格的 fxml 文件中创建了一个简单的结构。

这个想法是在左侧有一个树形菜单,在左侧有一个 GUI 元素来配置我的 GUI 设置。为了填充右侧,我想在窗格中加载相应的 fxml 文件。通过在树项中实现的 mouseclickevents 触发。

问题是,我不知道必须在 controller.java 文件中使用哪些函数来加载 fxml 文件并使其在拆分窗格的右侧可见。

编辑:

这是我的代码:

这就是 FXML MainFrame:

这就是我要调用的 FXML:

这就是控制器文件,它使用来自第一个 FXML 的操作来调用另一个,目标是在拆分窗格的右侧将其可视化。

我知道它不起作用。错误信息很清楚:

原因:javafx.fxml.LoadException:已指定根值。

但我没有任何线索。建议?


感谢你的回答。我确信它指向正确的方向,但我无法让它运行。

请看一下我的代码。

这就是 FXML MainFrame:

这就是我要调用的 FXML:

这就是控制器文件,它使用来自第一个 FXML 的操作来调用另一个,目标是在拆分窗格的右侧将其可视化。

我知道它不起作用。错误信息很清楚:

原因:javafx.fxml.LoadException:已指定根值。

但我没有任何线索。建议?

0 投票
1 回答
633 浏览

java - 当 FXML 解析太慢时,JavaFX 中的繁忙弹出窗口

FXML 性能是 JavaFX 的一个问题,如果您有复杂的屏幕并将它们分成使用 FXML 的小组件(为了可维护性/重用),那么它会变得非常慢。

由于 FXML 解析是在 UI 线程中进行的(不确定这一点,它仍然会阻止 JavaFX 应用程序线程),因此在处理 FXML 时,您无法在 JavaFX 中显示玻璃窗格/弹出窗口等。

我发现的唯一解决方法是在 FXML 为正在加载并在不再解析 FXML 文件时关闭它。

为此,我在 FXMLLoader 上方构建了一个外观。这也适用于 OpenGL 库(例如 LWJGL,而不是 Swing,任何 UI 和不在 JavaFX 应用程序线程中的东西都可以工作)。

我想知道是否存在更好的解决方案(仅限 JavaFX,不混合 UI 框架),因为这人为地增加了项目的复杂性,并且不能很好地与 OpenJFX 端口一起移植。

0 投票
1 回答
5751 浏览

javafx - 访问父控制器中加载的 FXML 的元素

我目前有以下情况:

我创建了一个由 FXML 控制器备份的 FXML 文件。屏幕由侧边栏和儿童支架组成。当我点击侧边栏中的一个元素时,我会在子文件夹中加载一个额外的 FXML 文件,如下所示:

这工作正常。但是我想在父控制器的控制器中访问加载的 FXML 的一些元素。我只是在加载后初始化了子 FXML 的元素。

我已经看过这个问题:JAVAFX - FXML - Access Loaded FXML Controls from Parent Controller,但是当我这样做时,我仍然得到一个错误:

我已经给出someChildTextField了一个fx:id并将它放在初始化的顶部,如下所示:

不过,我得到一个 NullpointerException,所以我认为它仍然找不到控件。

有谁知道如何访问父控制器中加载的 FXML 的元素?

0 投票
1 回答
755 浏览

java - JavaFX Web 部署:FXMLLoader NullPointerException

我想尝试 JavaFX 网络浏览器部署,所以我使用 IntelliJ 社区版 14.0.2 JavaFX 应用程序模板开始了一个非常简单的测试项目。这是代码:(没有插件,外部库或Maven)

主.java

Controller.java(附加到 sample.fxml)

sample.fxml(布局文件)

现在,当我将应用程序构建为 JAR 时,它可以毫无问题地运行。但是,当我使用预定义的“JavaFXApp”工件构建它时,它会生成一个 html、一个 jnlp 和一个 jar。当我在我的网络浏览器(Firefox Nightly 64bit)中打开 html 时,它给了我以下错误:

相关的代码行似乎是

然而,当作为单个独立 JAR 构建和打开时,同样的代码行工作得很好!关于为什么会发生错误或如何修复它的任何想法?

0 投票
1 回答
2579 浏览

java - JavaFX 从不同的类更改窗格颜色

我有个问题。我想从另一个控制器类更改窗格的颜色。我正在使用这段代码:

加载的、控制器和窗格不为空。但是窗格的颜色没有改变,有人可以帮我解决这个问题吗?非常感谢。

[编辑]

[编辑]

[编辑](包括不同项目的所有文件)包javafxapplication16;

FXML 文档控制器。

JavaFXApplication16

FXML

0 投票
1 回答
2694 浏览

javafx-8 - JavaFX 8 有没有办法从节点获取 FXML 引用?

我试图弄清楚是否有办法获得对给定节点的 FXML 的引用。

例如,我正在动态加载视图 - 假设我在当前控制器中引用了一个窗格:

我想保存打开了哪些视图,以便下次打开窗口时可以重新启动它们。像这样的东西:

我似乎无法找到一种方法来恢复开放的内容......希望有一种方法,而不是在另一个地方手动跟踪。

谢谢。

0 投票
1 回答
1413 浏览

javafx-8 - 放入包中时无法加载 FXML

我在 JavaFXApplication5 项目中得到了这种类型的文件层次结构。在此处输入图像描述

我已经为所有 fxml 文件制作了另一个包,所以当项目变大时,找到某些文件会更容易。

现在在 JavaFXApplication5 主类中,当应用程序尝试运行时,我确定会导致异常(java.lang.reflect.InvocationTargetException)。

我确定是因为“FXMLNew.fxml”根是错误的。但是我不知道在另一个包中时如何设置它......?

或者也许这些类型的文件应该放在普通文件夹中?

0 投票
2 回答
5816 浏览

eclipse - JavaFx8 (+Maven):加载 fxml 文件时出错

我正在尝试使用 Maven 编写 JavaFx8 应用程序。我编写了一个简单的应用程序主类和一个 fxml 文件(一个什么都不做的根 fxml 文件)。

当我尝试加载 fxml 根文件时,出现错误“未设置位置”:

我不是 JavaFx8 的新手,我已经遇到过这种错误,但这次我没有发现问题。

在此处输入图像描述

我的课程是:App.java

RootLayout.fxml:

我检查了打印出 getClass 输出的类路径(这是拥有类路径的正确方法吗?),为此我在 fxml 文件包中编写了一个“Unused.java”类:

当我运行应用程序时,getClass 输出是:

没用过

未使用的APP

所以在我看来,我给 loader.setLocation 的路径(“view/RootLayout.fxml”)是正确的,不是吗?

我还尝试将根 fxml 文件(重命名为 TestRootLayout)放在主类的包中,我仍然有错误。

任何人都可以看到错误吗?

笔记

我已经编写了 JavaFx 应用程序,但我从来没有使用过 Maven,这个项目的目的是用 Maven 设置一个 JavaFx8 项目。我认为我的问题不是来自 Maven,而是我给你我设置项目的命令,也许有问题:我做了命令:

我修改了 pom.xml 文件:

进而:

并在 Eclipse 中:将 -> 现有项目导入工作区

fxrt.jar 包含在 JRE 系统库中

更新:

为了检查问题是否没有更普遍的原因,我用硬编码元素编写了主类:

它有效,所以我想一切都井井有条。问题仍然存在:为什么 setLocation 不起作用?

更新:

fxml文件的路径肯定有问题。如果我改变:

和:

然后它工作

0 投票
0 回答
36 浏览

java - 无法在方法中识别窗格的值

这是在保存向导 FXML 中单击保存按钮时调用的函数。

单击保存按钮时,FXML 会关闭,这会导致我必须在其中隐藏窗格的主屏幕。现在,当我单击保存时,会出现空指针异常。场景构建器中的窗格 ID 是“窗格”。是否有某种方式可以链接主 FXML 和 SAVE 对话 FXML 并且单击保存按钮时我可以获得窗格的引用并且它不显示空值。我尝试使用该标志,但在舞台关闭后,该标志更改为其默认值。此外,如果有人可以建议帮助我在主 FXML 中创建带有 text1 争论的树视图。

0 投票
0 回答
82 浏览

java - 舞台可见后无法设置样式

这就是功能。错误在 stage.initStyle(StageStyle.UNDECORATED); 这表示在舞台可见后无法设置样式。你能帮我在哪里我应该在函数中声明它并建议一些需要的代码编辑(如果有的话)。