我已经(隐喻地)搜索了整个网络,以找到有关如何创建jar文件的说明,然后可以由场景构建器将其导入以添加额外的自定义组件。当前,我正在尝试创建一个带有textField的滑块,该滑块显示其值,并使用NumberStringConverter使用双向链接。我已经设置了所有类,但是现在我需要将它们捆绑在一个jar文件中,这对我不起作用。这些是类: FXML:
<fx:root type="javafx.scene.layout.HBox" xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml" fx:controller="main.java.valueSlider">
<Slider fx:id="slider" HBox.hgrow="ALWAYS"/>
<Label fx:id="label" text="value"/>
</fx:root>
现在,我可以导入该FXML文件并将其用作创建带有标签的滑块的快捷方式,但是我希望有一个用于双向链接的控制器。这是控制器类:
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);
}
}
现在的问题是:如何将这两个类导出到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)中打开场景生成器时,它说:
无法在Scene Builder中打开文件
java.lang.ClassNotFoundException:无法解析的导入
javafx.fxml.LoadException:
/G:/GitHub/customParts/src/main/resources/test.fxml
但是它没有提供更多信息,但是当我删除valueSlider组件时,它工作得很好。
如果您知道如何解决此问题,请告诉我。
预先感谢
Lenardjee