Я искал всю сеть (в переносном смысле), чтобы найти объяснение того, как создать файл 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