Я работаю над проектом, который будет включать добавление панелей (или hbox, если это будет работать лучше) в очень широкий HBox.Я настроил его в формате fxml довольно легко, но мне уже нужно будет сделать несколько из них, и я хотел бы избежать копирования всех копий.Поэтому я решил, что должен попытаться использовать цикл for для заполнения HBox, но по какой-то причине он не работает.Я в самом начале, поэтому мой код очень прост и понятен.
Это базовый пример, который я пытаюсь воссоздать
<HBox>
<children>
<Pane fx:id="pane0" prefHeight="200.0" prefWidth="200.0">
<children>
<Button layoutX="71.0" layoutY="95.0" mnemonicParsing="false" text="Button" />
</children></Pane>
<Pane fx:id="pane1" prefHeight="200.0" prefWidth="200.0">
<children>
<Button layoutX="71.0" layoutY="95.0" mnemonicParsing="false" text="Button" />
</children></Pane>
<Pane fx:id="pane2" prefHeight="200.0" prefWidth="200.0">
<children>
<Button layoutX="71.0" layoutY="95.0" mnemonicParsing="false" text="Button" />
</children></Pane>
</children>
</HBox>
Поэтому для его динамического (и для ясности) создания я создал класс для HBox и панелей.На данный момент на каждой панели есть кнопка, но они будут подвергаться дальнейшей настройке, как только этот код заработает.То же самое с HBox.
Вот HBox
public class HBoxTestClass {
@FXML
HBox hBox = new HBox();
public HBoxTestClass(){
}
@FXML
public void initialize(){
populateHBox();
}
private void populateHBox(){
for (int i = 0; i < 3; i++){
hBox.getChildren().add(new TestPane());
hBox.setSpacing(10);
}
}
}
его fxml
<HBox fx:id="hBox" xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml"
fx:controller="sample.HBoxTestClass"
prefHeight="400.0" prefWidth="600.0">
</HBox>
Класс панели и его fxml
public class TestPane extends Pane{
@FXML Pane testPane = new Pane();
@FXML Button button = new Button();
public TestPane(){
}
@FXML
private void initialize(){
button.setText("Click Me!");
}
}
<Pane fx:id="testPane" xmlns="http://javafx.com/javafx"
xmlns:fx="http://javafx.com/fxml"
fx:controller="sample.TestPane"
prefHeight="200.0" prefWidth="200.0">
<children>
<Button fx:id="button" layoutX="71.0" layoutY="95.0" mnemonicParsing="false" text="Button" />
</children>
</Pane>
Итак, мой очень простой код вышепросто создает пустой, широкий экран без панелей.Я поместил консольный вывод в конструктор моего TestPane
класса, чтобы я знал, что он вызывается, но все равно ничего не появляется.Любой совет?Спасибо