为javafx场景生成器创建自定义组件
我已经搜索了整个web(隐喻性地)以找到关于如何创建jar文件的解释,然后场景生成器可以导入该文件以添加额外的自定义组件。目前,我正在尝试创建一个带有文本字段的滑块,该字段显示其值,并使用NumberStringConverter创建一个双向链接。我已经把所有的类都设置好了,但是现在我需要把它们打包到一个jar文件中,而这部分对我来说并不适用。这些是课程: FXML: 现在的问题是:如何将这两个类导出到jar文件中,以便将其加载到场景生成器中 快速问题:我在同一个包中创建了一个新的FXML文件,并尝试使用如下组件:为javafx场景生成器创建自定义组件,javafx,scenebuilder,Javafx,Scenebuilder,我已经搜索了整个web(隐喻性地)以找到关于如何创建jar文件的解释,然后场景生成器可以导入该文件以添加额外的自定义组件。目前,我正在尝试创建一个带有文本字段的滑块,该字段显示其值,并使用NumberStringConverter创建一个双向链接。我已经把所有的类都设置好了,但是现在我需要把它们打包到一个jar文件中,而这部分对我来说并不适用。这些是课程: FXML: 现在的问题是:如何将这两个类导出到jar文件中,以便将其加载到场景生成器中 快速问题:我在同一个包中创建了一个新的FXML文件,
<AnchorPane xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.121" fx:controller="main.java.controller">
<children>
<valueSlider sliderPos="75"/>
</children>
</AnchorPane>
但当我试图在IDE(intelliJ IDEA)中打开场景生成器时,它说:
无法在场景生成器中打开文件java.lang.ClassNotFoundException:未解析的导入
javafx.fxml.LoadException:
/G:/GitHub/customParts/src/main/resources/test.fxml 但是它没有提供更多的信息,但是当我删除valueSlider组件时,它工作得非常好 如果你知道如何解决这个问题,请告诉我 提前感谢,
Lenardjee
值滑块
不应工作。您正在fxml中指定控制器,并为FXMLLoader
设置controller
属性。同时执行这两项操作将导致异常。。。顺便说一句:根据java命名约定,类型名称以大写字母开头……是的,没错,但这并不能解决问题。
public class valueSlider extends HBox {
@FXML
private TextField value;
@FXML
private Slider slider;
private DoubleProperty sliderPos = new SimpleDoubleProperty();
private DoubleProperty
sliderMin = new SimpleDoubleProperty(),
sliderMax = new SimpleDoubleProperty();
public valueSlider() {
try {
FXMLLoader l = new FXMLLoader(getClass().getResource("valueSlider.fxml"));
l.setController(this);
l.setRoot(this);
l.load();
}
catch (IOException e) {
e.printStackTrace();
}
}
@FXML
private void initialize() {
slider.minProperty().bindBidirectional(sliderMin);
slider.maxProperty().bindBidirectional(sliderMax);
slider.valueProperty().bindBidirectional(sliderPos);
value.textProperty().bindBidirectional(sliderPos, new NumberStringConverter());
}
public double getSliderPos() {
return sliderPos.get();
}
public DoubleProperty sliderPosProperty() {
return sliderPos;
}
public void setSliderPos(double sliderPos) {
this.sliderPos.set(sliderPos);
}
}
<AnchorPane xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.121" fx:controller="main.java.controller">
<children>
<valueSlider sliderPos="75"/>
</children>
</AnchorPane>