我的应用程序中有JTree和JComboBox。当我选择一个节点时,JComboBox的内容也会改变,但是在选择JComboBox项的情况下,我需要做同样的事情。
如您所见,如果我选择“ Default Session Start”,则应在JTree中选择相同的节点。有人可以告诉我,什么是好的方法。 enter image description here
这只是应用程序框架的一部分。 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 ...
...
}
重要的是,对于未更改的项目,没有来回设置所选项目。因此进行平等测试。