从JComboBox选择JTree节点,反之亦然

问题描述 投票:0回答:1

我的应用程序中有JTree和JComboBox。当我选择一个节点时,JComboBox的内容也会改变,但是在选择JComboBox项的情况下,我需要做同样的事情。

如您所见,如果我选择“ Default Session Start”,则应在JTree中选择相同的节点。有人可以告诉我,什么是好的方法。 enter image description here

java user-interface jcombobox jtree
1个回答
0
投票

这只是应用程序框架的一部分。 Swing相当冗长,您需要做很多工作。您为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 ...

        ...
    }

重要的是,对于未更改的项目,没有来回设置所选项目。因此进行平等测试。

© www.soinside.com 2019 - 2024. All rights reserved.