【问题标题】:How to import a custom component with resource into SceneBuilder?如何将带有资源的自定义组件导入 SceneBuilder?
【发布时间】:2015-02-15 18:57:47
【问题描述】:

我为我的项目创建了一堆自定义节点,通过子类化现有节点。

例如:

package sample;

import javafx.scene.control.Button;

public class MyCustomButton extends Button {
    public MyCustomButton() {    
        System.out.println("This is my custom button...");
    }
}

这很好,我创建了一个 jar 文件,我可以将它导入到 Scenebuilder。

但是,如果我的自定义节点使用资源,并且我尝试在 Scenebuilder 中导入 jar,则自定义组件将不会显示在导入对话框中。

package sample;

import javafx.scene.control.Button;
import javafx.scene.image.Image;

public class MyCustomButton extends Button {
    public MyCustomButton() {
        Image image = new Image("sample/picture.gif");
        System.out.println("This is my custom button...");
    }
}

如果 Scenebuilder 包含资源,我如何说服 Scenebuilder 导入我的自定义组件? jar 文件包含所有需要的资源,以及一个在代码中运行良好的组件,但我也希望能够在 Scenebuilder 中使用它。

【问题讨论】:

  • jar 文件中是否存在自定义组件的资源?
  • 是的,运行jar tf 表明资源存在。我也可以用java -jar 执行jar 文件,证明自定义组件在工作。
  • 另一个 StackOverflow 答案有一些关于 importing JAR files into SceneBuilder 的信息。我不确定它是否能完全解决您的问题(因为导入的示例除了基于 Java 的控制代码之外没有其他资源),但它可能会帮助您制定解决方案。

标签: javafx scenebuilder


【解决方案1】:

我为你做了:)

import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;

public class MyCustomButton extends Button {
    public MyCustomButton() {
        final ImageView   imageView = new ImageView();

        Image image = new Image(getClass().getClassLoader().getResource("sample/picture.png").toExternalForm());

        imageView.setImage(image);
        this.setGraphic(imageView);
        System.out.println("This is my custom button...");

    }
}

【讨论】:

    【解决方案2】:

    在 SB 上查看分析报告。单击库右侧的设置图标,然后选择“自定义库文件夹”->“显示 Jar 分析报告”。您可以看到一些有用的提示。也许这对你有帮助。

    【讨论】:

      猜你喜欢
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      • 2016-02-24
      • 1970-01-01
      • 2018-05-16
      • 2015-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多