1
一般而言,我不想要自動選擇摺疊節點。相反,我希望它的子節點保持選擇狀態,以前選擇它。如何在摺疊後不選擇樹節點
在SSCCE下面展開「水果」,然後選擇「香蕉」。現在通過單擊「水果」節點圖標左側的摺疊圖標摺疊「水果」。 「水果」節點崩潰,現在也選中。
我希望「香蕉」節點在「水果」節點摺疊後也保持選中狀態。我怎樣才能做到這一點?
謝謝!
SSCCE:
import javax.swing.JFrame;
import javax.swing.JTree;
import javax.swing.SwingUtilities;
import javax.swing.tree.DefaultMutableTreeNode;
public class TreeExample extends JFrame
{
private final JTree tree;
public TreeExample()
{
//create the root node
final DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");
//create the child nodes
final DefaultMutableTreeNode vegetableNode = new DefaultMutableTreeNode("Vegetables");
final DefaultMutableTreeNode fruitNode = new DefaultMutableTreeNode("Fruits");
final DefaultMutableTreeNode aNode = new DefaultMutableTreeNode("apple");
final DefaultMutableTreeNode bNode = new DefaultMutableTreeNode("banana");
final DefaultMutableTreeNode cNode = new DefaultMutableTreeNode("coconut");
final DefaultMutableTreeNode dNode = new DefaultMutableTreeNode("date");
fruitNode.add(aNode);
fruitNode.add(bNode);
fruitNode.add(cNode);
fruitNode.add(dNode);
//add the child nodes to the root node
root.add(vegetableNode);
root.add(fruitNode);
//create the tree by passing in the root node
this.tree = new JTree(root);
this.add(this.tree);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setTitle("JTree Example");
this.pack();
this.setVisible(true);
}
public static void main(final String[] args)
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
new TreeExample();
}
});
}
}
據我所知,唯一可見的節點可以選擇 - 這是在UI委託深跌處理,所以沒有太多機會來改變。如果你真的想要它,你可能需要保留自己的單獨selectionModel並根據需要更新另一個 – kleopatra
我認爲對於SINGLE_TREE_SELECTION,您可以從鼠標事件中選擇丟失展開/摺疊 – mKorbel
@mKorbel我不是母語爲英語的人,但你的句子似乎漏掉了一些東西。 – haferblues