Связывание комбинированного списка в JavaFx - PullRequest
0 голосов
/ 04 апреля 2020

У меня есть интерфейс с тремя выпадающими списками. Каждый выпадающий список показывает атрибут объекта и сортируется в алфавитном или числовом порядке в зависимости от случая. Когда я выбираю элемент (атрибут) из выпадающего списка, остальные два выбирают его элемент (атрибут), соответствующий объекту.

Я не могу найти документацию по нему и не имею понятия о том, как сделай это. Я нахожу информацию только о вложенном выпадающем списке, но это не так.

Надеюсь, вы понимаете.

1 Ответ

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

В этом примере я добавил слушателя к одному из полей со списком, который «прослушивает» изменение выбранного значения со списком. После выбора значения в этом поле со списком второе поле со списком настраивается, чтобы иметь соответствующее значение. Вы можете взять эту же логику c и применить ее тремя способами, добавив слушателя в каждое поле со списком. Дайте мне знать, если у вас есть какие-либо вопросы!

ComboBox<String> combo = new ComboBox<String>();
combo.getItems().add("1");
combo.getItems().add("2");
combo.getItems().add("3");
combo.getSelectionModel().select(0); // value index to select

ComboBox<String> combo2 = new ComboBox<String>();
combo2.getItems().add("10");
combo2.getItems().add("20");
combo2.getItems().add("30");
combo2.getSelectionModel().select(0);

combo.getSelectionModel().selectedItemProperty().addListener(new ChangeListener<String>() {
    @Override
    public void changed(ObservableValue ov, String oldVal, String newVal) {
        if (newVal.equals("1"))
            if (combo2.getSelectionModel().getSelectedIndex() != 0)
                combo2.getSelectionModel().select(0);
        if (newVal.equals("2"))
            if (combo2.getSelectionModel().getSelectedIndex() != 1)
            combo2.getSelectionModel().select(1);
        if (newVal.equals("3"))
            if (combo2.getSelectionModel().getSelectedIndex() != 2)
            combo2.getSelectionModel().select(2);
    }
});
...