Я новичок в JavaFX и пытаюсь динамически добавлять кнопки в TilePane на основе данных, хранящихся в базе данных. Для каждой записи, возвращаемой из базы данных, я добавлю новую кнопку TilePane (кнопка F XML указана ниже). Затем эту кнопку нужно изменить для данных, хранящихся в базе данных.
Я пытаюсь найти метку, которая находится на 2 уровня ниже в кнопке (дочерний элемент Vbox, который помещается в кнопку), он возвращает null.
Что я делаю не так? Я попытался выполнить поиск из Vbox, потому что подумал, что, возможно, это не сработало, потому что это ребенок ребенка. К сожалению, это не помогло.
try {
while (res.next()){
addActuator(); //adds the button
Button button = (Button) Actuator_Tile_Pane.lookup("#placeholder");
Label label = (Label) button.lookup("#label"); // returns null
button.setId(res.getString("id"));
System.out.println(label);
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
<Button fx:id="placeholder" mnemonicParsing="false" prefHeight="150.0" prefWidth="150.0" xmlns="http://javafx.com/javafx/10.0.2-internal" xmlns:fx="http://javafx.com/fxml/1">
<graphic>
<VBox fx:id="vbox" alignment="CENTER" prefHeight="200.0" prefWidth="100.0" spacing="10.0">
<children>
<Label fx:id="label" text="Label" />
<ImageView fx:id="img" fitHeight="73.0" fitWidth="98.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../icon/lightbulb-on-outline.png" />
</image>
<effect>
<ColorAdjust brightness="-0.12" hue="0.29" saturation="1.0" />
</effect>
</ImageView>
<ToggleButton fx:id="toggle" blendMode="SRC_ATOP" mnemonicParsing="false" text="ToggleButton">
<effect>
<ColorAdjust />
</effect>
</ToggleButton>
</children>
</VBox>
</graphic>
<padding>
<Insets left="20.0" right="20.0" />
</padding>
</Button>