取消选择 JTree
Deselect a JTree
我有一个 JPanel
包含 8 个不同的 JTrees
,每个 JScrollPane
。
当我单击一个树节点时,即使我 select 另一棵树,它也总是 selected。所以情况可能是这样的:
我的简单目标是在单击另一棵树时删除select一棵树。
我已经解决了这个问题,但不是以一种高效和优雅的方式,为 each 树这样做:
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);
}
我有一个 JPanel
包含 8 个不同的 JTrees
,每个 JScrollPane
。
当我单击一个树节点时,即使我 select 另一棵树,它也总是 selected。所以情况可能是这样的:
我的简单目标是在单击另一棵树时删除select一棵树。
我已经解决了这个问题,但不是以一种高效和优雅的方式,为 each 树这样做:
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);
}