任何引用使用FXML的分层组件定义的示例都将非常感谢,并获得50分的奖励。(只需3级)
有一个叫大卫的人确实在论坛上回答了你的问题。为了遗产的目的,我把它贴在这里。
自定义组件的场景生成器中的类加载器存在问题。在SceneBuilder中加载FXML文件时:它使用带有自己的类加载器的FXMLLoader。为了加载使用自己的FXMLLoader加载其他自定义组件的自定义组件,需要使所有FXMLLoader都使用相同的类加载器。正如David在论坛上所说,您可以通过在自定义组件中添加这段代码来实现这一点。
public class CustomC extends VBox {
public CustomC() {
init();
}
private void init() {
FXMLLoader loader = new FXMLLoader();
loader.setRoot(this);
loader.setLocation(this.getClass().getResource("CustomC.fxml"));
// Make sure to load "CustomC.fxml" with the same classloader that
// was used to load CustomC class.
loader.setClassLoader(this.getClass().getClassLoader());
try {
final Node root = (Node)loader.load();
assert root == this;
} catch (IOException ex) {
throw new IllegalStateException(ex);
}
}
}
如果您希望将此代码外部化到一个类中,那么将这个类与您的自定义组件放在同一个jar中是很重要的:您不能将它放在一个外部jar中(至少目前是这样)。
> 我是使用fx:root,还是不使用它?我选择用它。所以在控件的controller+root类中,我将自己设置为root和controller,就像需要的那样。但它仍然说“root尚未设置。在加载之前使用setRoot()方法。” 在包含自定义控件的父FXML中,我应该导入什么? 正确的类路径是什么,以便我可以在SceneBuilder2.0中显示我的自定义控件?我根本不太明白“/.../..
我跟随这个博客向Scene Builder 2.0添加了一个自定义JavaFX组件,并构建了自己的自定义组件。 FXML文件: 控制器类: 样式表: 现在我的问题是我不能改变场景生成器中标签的值。我们是否可以创建一个自定义字段,该字段将出现在场景生成器上,并有助于更改标签文本?
我有一个自定义JavaFx控件,它在我的应用程序中呈现。但是,我无法让SceneBuilder理解它。 我有customTextField.java/customTextField.CustomTextField继承自UserControl,如这里所定义的,但我创建的任何自定义控件都会出现场景生成器问题。 首先,我必须将import语句更改为通配符。从 sample.fxml:
我正在尝试编写使用SceneBuilder创建的按钮的功能。我在Scene builder中找到了“Code”部分,并设置了当我单击按钮时将启动的方法的名称(例如fileSelector)。在该方法中,我应该使用FileChooser变量(我需要从PC上获取一个图像并将其保存到一个“file”变量中)。 我复制了示例控制器骨架并将其粘贴到我的controller类中。现在我不知道如何实现该方法,因
我试图用一些随机信息创建一个简单的LineChart,但当我试图通过SceneBuilder使用fxml文件创建时,图表显示了但从未填充。每当我手动创建vbox、linechart和scene时,一切工作都很好。我真的很困惑,在使用fxml文件时,图表代码应该去哪里。
我正在学习使用SceneBuilder创建一个新的JavaFX应用程序的教程,并尝试向.fxml文件添加一个controller类。 我正在使用Eclipse和Gluon的Scene Builder V8.1.1版本。 在哪里可以将我的.fxml文件连接到我的控制器Java类?