Как заполнить JavaFX ChoiceBox отдельным классом Enum? - PullRequest
0 голосов
/ 24 октября 2019

Я пытаюсь создать программу JavaFX для управления производственной линией. Я работаю с базой данных, чтобы пользователь мог заполнить базу данных TextField и ChoiceBox. У меня проблемы с заполнением ChoiceBox из созданного мною класса Enum.

Ожидается, что мой ChoiceBox заполнен элементами из моего Enum класса, однако ChoiceBoxоставаясь пустымКод компилируется.

Прежде чем вы отправите меня на эту ссылку , я попытался воспользоваться советом в этом обсуждении, но я не могу обернуть его вокруг. Это обсуждение не помогает, потому что я не уверен, где они пытаются заполнить их ComboBox. Кроме того, cbxStatus.getItems().setAll(Status.values()); не работает для меня (возможно, я применяю его неправильно).

Мой класс Enum:

package sample;

public enum ItemType {
    AUDIO("AU"),
    VISUAL("VI"),
    AUDIOMOBILE("AM"),
    VISUALMOBILE("VM");

    final String itemType;

    ItemType(String itemType) {
        this.itemType = itemType;
    }

    public String getItemType() {
        return itemType;
    }
}

Мой класс контроллера:

package sample;

import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.ChoiceBox;
import javafx.scene.control.TextField;

import java.sql.SQLException;

public class Controller {
    @FXML
    private TextField productName;
    @FXML
    private TextField productManufacturer;
    @FXML
    private ChoiceBox<ItemType> itemType = new ChoiceBox<>();

    private DatabaseManager databaseManager = new DatabaseManager();

    public Controller() throws SQLException {
    }

    @FXML
    public void initialize() {
        itemType.getItems().setAll(ItemType.values());
    }

    public void addProduct() {
        String name = productName.getText();
        String manufacturer = productManufacturer.getText();
        String type = itemType.toString();

        databaseManager.insert(type, manufacturer, name);
        System.out.println("Button Pressed");
    }

    public void recordProduction(ActionEvent actionEvent) {
        System.out.println("Button Pressed");
    }
}

Наконец, после заполнения ChoiceBox мне нужно зафиксировать выбор пользователя длявход в мою базу данных. Что-то вроде String type = itemType.toString();.

1 Ответ

0 голосов
/ 24 октября 2019

Я думаю, что вы упускаете очевидное и думаете о новом, проблема Enum.

    @FXML
    private ChoiceBox<ItemType> itemType = new ChoiceBox<>();

Поле вашего контроллера имеет доступ к одному экземпляру ChoiceBox, а поле формы -другой. Вы никогда не добавляли свои предметы в окно выбора, с которым взаимодействуете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...