일반적으로 축소 된 노드가 자동으로 선택되는 것을 원하지 않습니다. 대신 이전에 선택되었을 때 자식 노드가 선택 상태를 유지하기를 원합니다.접힌 후 트리 노드를 선택하지 않는 방법
아래의 SSCCE에서 "Fruits"를 펼친 다음 "banana"를 선택하십시오. 이제 "Fruits"노드의 아이콘 왼쪽에있는 접기 아이콘을 클릭하여 "Fruits"를 접습니다. "Fruits"노드가 접히고 현재 선택됩니다.
"Fruits"노드가 축소 된 후에도 "banana"노드를 계속 선택하고 싶습니다. 이것을 어떻게 할 수 있습니까?
감사합니다.
는 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();
}
});
}
}
는 AFAIK 만 볼 노드를 선택할 수 있습니다 - 즉, 변경할 수있는 기회를, 깊은 UI 위양의 처리 때문에별로입니다. 당신이 정말로 그것을 원한다면, 당신은 아마 당신 자신의 분리 된 selectionModel을 유지하고 필요에 따라 다른 것을 업데이트해야 할 것입니다. – kleopatra
SINGLE_TREE_SELECTION을 위해서 당신은 확장/축소 된 마우스 이벤트에서 잃어버린 선택을 할 수 있다고 생각합니다. – mKorbel
@mKorbel 저는 아닙니다 네이티브 영어 연설자,하지만 당신의 문장은 뭔가를 놓칠 것 같습니다. – haferblues