ChoiceBox не обновляется должным образом JavaFX - PullRequest
0 голосов
/ 25 апреля 2020

Создание приложения для спортивного планирования, и у меня возникла проблема с обновлением ChoiceBox. Я буквально прочитал все темы, которые я могу, и перепробовал все, что мог, чтобы это работало. Я читаю значения из базы данных sqllite и помещаю их в список наблюдаемых, а затем добавляю их в ombobox. Что происходит, когда новый элемент добавляется в лигуелиста, поле со списком не обновляется, даже если значение действительно есть в языке лигиста и поле со списком. Но если я добавляю один элемент, затем удаляю другой элемент, он работает. Я также попытался запустить комбобокс в начале этого метода, но тогда в нем ничего не появится.

'' '

public void initialize(URL url, ResourceBundle rb) {
    this.url = url;
    this.rb = rb;
    dbConnection dc = new dbConnection();

    try {
        Connection conn = dc.getConnection();
        DatabaseMetaData md = conn.getMetaData();
        ResultSet rs = md.getTables(null, null, "%", null);
        leagueChoicesList = FXCollections.observableArrayList();
        while (rs.next()) {
            if (!(rs.getString("TABLE_NAME").equals("login"))) {
                leagueChoicesList.add(rs.getString("TABLE_NAME"));
            }
        }
        leagueChoicesBox.setItems(leagueChoicesList);
        if (!leagueChoicesList.isEmpty()) {
            leagueChoicesBox.setValue(leagueChoicesList.get(0));
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    //Testing only
    System.out.println(leagueChoicesList);
}

' ''

1 Ответ

0 голосов
/ 26 апреля 2020

Пока ваш список списков leagueChoicesList

    private ObjectProperty<ObservableList<String>> leagueChoicesList = new SimpleObjectProperty<>(FXCollections.<String>observableArrayList());

, вы можете заменить эту строку

    leagueChoicesBox.setItems(leagueChoicesList);

этой строкой

    leagueChoicesBox.itemsProperty().bind(leagueChoicesList);

и добавить в список используйте

    if (!(rs.getString("TABLE_NAME").equals("login"))) {
        leagueChoicesList.get().add(rs.getString("TABLE_NAME"));
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...