如何将带有资源的自定义组件导入SceneBuilder?
How to import a custom component with resource into SceneBuilder?
我通过对现有节点进行子类化,为我的项目创建了一堆自定义节点。
例如:
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 导入它们? jar 文件包含所有需要的资源,以及一个在代码中运行良好的组件,但我也希望能够在 Scenebuilder 中使用它。
查看SB的分析报告。单击库右侧的设置图标,然后单击 select "Custom Library Folder" --> "Show Jar Analysis Report"。你可以看到一些有用的提示。也许这对你有帮助。
我为你做了:)
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...");
}
}
我通过对现有节点进行子类化,为我的项目创建了一堆自定义节点。
例如:
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 导入它们? jar 文件包含所有需要的资源,以及一个在代码中运行良好的组件,但我也希望能够在 Scenebuilder 中使用它。
查看SB的分析报告。单击库右侧的设置图标,然后单击 select "Custom Library Folder" --> "Show Jar Analysis Report"。你可以看到一些有用的提示。也许这对你有帮助。
我为你做了:)
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...");
}
}