Выберите узел JTree из JComboBox и наоборот - PullRequest
0 голосов
/ 17 января 2020

В моем приложении есть JTree и JComboBox. Когда я выбираю узел, содержимое JComboBox также изменяется, но мне нужно сделать то же самое в случае выбора элемента JComboBox.

Как видите, если я выберу «Запуск сеанса по умолчанию», тот же самый узел должен быть выбран в JTree. Может ли кто-нибудь сказать мне, что будет хорошим подходом для этого. введите описание изображения здесь

1 Ответ

0 голосов
/ 17 января 2020

Это всего лишь часть скелета приложения. Свинг довольно многословен, и многое вам нужно будет отработать. Вы предоставляете модели данных для JComponents, и вам необходимо добавить прослушиватели, или

JComboBox<Thing> comboBox = new JComboBox<>(controller.getComboBoxModel());

JTree tree = new JComboBox<>();
... tree.setSelectionModel(controller.getTreeSelectionModel());

publi class Controller { // or Application

    public static void main(String[] args) { ... }

    // Model:
    private ComboBoxModel<Thing> comboBoxModel;
    private TreeSelectionModel treeSelectionModel;

    public Controller() {
        comboBoxModel = new DefaultComboBoxModel() {
            @Override
            pubic void setSelectedItem​(Thing item) {
                if (!item.equals(getSelectedItem())) {
                    super.setSelectedItem(itenm);
                    treeSelectionModel.setSelectionPath(...);
                }
            }
        };
        treeSelectionModel = new DefaultTreeSelectionModel ...

        ...
    }

Важно то, что для неизменного элемента нет обратной и обратной настройки выбранного элемента. Отсюда и критерий равенства.

...