gpt4 book ai didi

java - 取消选择 JTree

转载 作者:行者123 更新时间:2023-11-29 04:16:39 25 4
gpt4 key购买 nike

我有一个 JPanel 包含 8 个不同的 JTrees,每个都在一个 JScrollPane 中。

当我点击一个树节点时,它总是被选中,即使我选择了不同的树。所以情况可能是这样的:

enter image description here

我的简单目标是在单击另一棵树时取消选择一棵树。

我已经解决了这个问题,但不是以一种高效和优雅的方式,为每棵树做这个:

JScrollPane scrollPane = new JScrollPane(treeONE);
treeONE.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
treeTWO.clearSelection();
treeTHREEC.clearSelection();
treeFOUR.clearSelection();
treeFIVE.clearSelection();
treeSIX.clearSelection();
treeSEVEN.clearSelection();
treeEIGHT.clearSelection();
}
});
add(scrollPane);

有没有更好的编码方式?

最佳答案

定义一个包含所有树的数组:

JTree[] allTrees = {
treeONE, treeTWO, treeTHREE, treeFOUR, treeFIVE, treeSIX, treeSEVEN, treeEIGHT
};

然后您可以对所有树使用相同的 MouseListener 实例:

MouseListener mouseListenerForAllTrees = new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// deselect all trees except the one which fired the event
for (JTree tree : allTrees) {
if (tree != e.getSource())
tree.clearSelection();
}
}
};
for (JTree tree : allTrees) {
tree.addMouseListener(mouseListenerForAllTrees);
}

关于java - 取消选择 JTree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51970901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com