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

Scenebuilder中使用分层定制JavaFx组件的类路径解析

齐起运
2023-03-14

任何引用使用FXML的分层组件定义的示例都将非常感谢,并获得50分的奖励。(只需3级)

共有1个答案

锺离良哲
2023-03-14

有一个叫大卫的人确实在论坛上回答了你的问题。为了遗产的目的,我把它贴在这里。

自定义组件的场景生成器中的类加载器存在问题。在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类?