Javafx. Не работает ComboBox из класса Controller

144
28 апреля 2019, 14:00

Для JavaFX-приложения использую связку: Сontroller.java, Main.java и scene.fxml. Задача: добавить CheckBox с определенными значениями. В классе Controller.java создаю ObservableList и передаю его созданному ComboBox:

ObservableList<String> test = FXCollections.observableArrayList("one", "two", "three", "etc");
@FXML
ComboBox<String> Spots = new ComboBox<>(test);

В scene.fxml добавлено:

<ComboBox fx:id="Spots" layoutX="99.0" layoutY="111.0" prefHeight="25.0" prefWidth="65.0" promptText="n"></ComboBox>

При запуске выходит пустой список:

Если в каком-нибудь обработчике событий, например у кнопки, прописать:

Spots.setItems(test);

То список значений появляется в созданном ранее CheckBox. Почему список не инициализируется при создании объекта?

PS. Если прописать значения списка непосредственно в scene.fxml, то список работает:

        <ComboBox fx:id="Spots" layoutX="99.0" layoutY="111.0" prefHeight="25.0" prefWidth="65.0" promptText="n">
        <items>
            <FXCollections fx:factory="observableArrayList">
                <Integer fx:value="1" />
                <Integer fx:value="2" />
                <Integer fx:value="3" />
                <Integer fx:value="4" />
                <Integer fx:value="5" />
                <Integer fx:value="6" />
                <Integer fx:value="7" />
                <Integer fx:value="8" />
                <Integer fx:value="9" />
                <Integer fx:value="10" />
            </FXCollections>
        </items>
    </ComboBox>
Answer 1

FXML элементы не нужно инициализировать, это за вас делает FXMLLoader, иначе вы потеряетя ссылку на объект в сцене; замените

@FXML
ComboBox<String> Spots = new ComboBox<>(test);

на:

@FXML
ComboBox<String> Spots;
@FXML
private void initialize() {
     Spots.setItems( test );
}
READ ALSO
Создание зависимостей, аннотация OneToMany

Создание зависимостей, аннотация OneToMany

между таблицами у меня связь один ко многим, использую аннотацию @JoinColumn, насколько понимаю при этой аннотации просто добавляется дополнительный...

121
Ввод данных через Scanner

Ввод данных через Scanner

Вот я написал код который вводит значения не в столбец а в строку:

173
Как сравнить цифровые значения enum?

Как сравнить цифровые значения enum?

Как создать enum с числами? И как сравнивать их между собой?

169
non-static method add(e) cannot be referenced from a static context

non-static method add(e) cannot be referenced from a static context

Помогите решить проблемуНе могу понять, в чем моя ошибка

308