看下下面父节点A,B,C( 后面是子节点)A AA AB
B BA BB
C AA AB我是在A中加了2个叶子AA,AB,然后把AA,BB,克隆一份加到C中,我如何选中 A下面的叶子节点,C下面2个叶子也选中,如果A下面取消选中,C下面也取消选择呢?我是在 JTree tree = new JTree();
tree.addTreeSelectionListener( new TreeSelectionListener()
{
public void valueChanged(TreeSelectionEvent e){
//我的方法改怎么写呢?
}
};
B BA BB
C AA AB我是在A中加了2个叶子AA,AB,然后把AA,BB,克隆一份加到C中,我如何选中 A下面的叶子节点,C下面2个叶子也选中,如果A下面取消选中,C下面也取消选择呢?我是在 JTree tree = new JTree();
tree.addTreeSelectionListener( new TreeSelectionListener()
{
public void valueChanged(TreeSelectionEvent e){
//我的方法改怎么写呢?
}
};
import java.util.Enumeration;
import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;class TreeFrame implements TreeSelectionListener {
private JTree example = null;
public TreeFrame() {
DefaultMutableTreeNode root = new DefaultMutableTreeNode(" root ", true);
DefaultMutableTreeNode a = new DefaultMutableTreeNode(" A ");
root.add(a);
a.add(new DefaultMutableTreeNode(" AA "));
a.add(new DefaultMutableTreeNode(" AB "));
DefaultMutableTreeNode b = new DefaultMutableTreeNode(" B ");
root.add(b);
b.add(new DefaultMutableTreeNode(" BA "));
b.add(new DefaultMutableTreeNode(" BB "));
DefaultMutableTreeNode c = new DefaultMutableTreeNode(" C ");
root.add(c);
c.add(new DefaultMutableTreeNode(" AA "));
c.add(new DefaultMutableTreeNode(" AB "));
example = new JTree(root);
example.addTreeSelectionListener(this);
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
panel.add(new JScrollPane(example));
JFrame frame = new JFrame(" JTreeDemo ");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(panel);
frame.setSize(250, 400);
frame.setVisible(true);
}
public void valueChanged(TreeSelectionEvent e) {
example.expandPath(e.getPath());
DefaultMutableTreeNode dm = (DefaultMutableTreeNode) e.getPath()
.getLastPathComponent();
for (Enumeration em = dm.children(); em.hasMoreElements();) {
TreeNode n = (TreeNode) em.nextElement();
TreePath visiblePath = new TreePath(((DefaultTreeModel) example
.getModel()).getPathToRoot(n));
example.addSelectionPath(visiblePath);
}
}
}
public class TreeTest {
public static void main(String[] args) {
new TreeFrame();
}
}
import java.util.Enumeration;
import java.util.List;import javax.swing.BoxLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTree;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;class TreeFrame implements TreeSelectionListener {
private JTree example = null; private List<TreeNode> allLeaf = new ArrayList<TreeNode>(); public TreeFrame() {
DefaultMutableTreeNode root = new DefaultMutableTreeNode(" root ", true);
DefaultMutableTreeNode a = new DefaultMutableTreeNode(" A ");
root.add(a);
a.add(new DefaultMutableTreeNode(" AA "));
a.add(new DefaultMutableTreeNode(" AB "));
DefaultMutableTreeNode b = new DefaultMutableTreeNode(" B ");
root.add(b);
b.add(new DefaultMutableTreeNode(" BA "));
b.add(new DefaultMutableTreeNode(" BB "));
DefaultMutableTreeNode c = new DefaultMutableTreeNode(" C ");
root.add(c);
c.add(new DefaultMutableTreeNode(" AA "));
c.add(new DefaultMutableTreeNode(" AB "));
example = new JTree(root);
example.addTreeSelectionListener(this);
JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel, BoxLayout.X_AXIS));
panel.add(new JScrollPane(example));
JFrame frame = new JFrame(" JTreeDemo ");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setContentPane(panel);
frame.setSize(250, 400);
frame.setVisible(true);
visitAllNodes(example);
} public void valueChanged(TreeSelectionEvent e) {
example.expandPath(e.getPath());
DefaultMutableTreeNode dm =
(DefaultMutableTreeNode) e.getPath().getLastPathComponent();
DefaultMutableTreeNode root =
(DefaultMutableTreeNode) example.getModel().getRoot();
for (TreeNode leaf : allLeaf) {
if (leaf.toString().equals(dm.toString())) {
TreePath visiblePath =
new TreePath(((DefaultTreeModel) example.getModel())
.getPathToRoot(leaf));
example.addSelectionPath(visiblePath);
}
}
} public void visitAllNodes(JTree tree) {
DefaultMutableTreeNode root = (DefaultMutableTreeNode) tree.getModel().getRoot();
Enumeration breadthFirst = root.breadthFirstEnumeration();
while (breadthFirst.hasMoreElements()) {
TreeNode node = (TreeNode) breadthFirst.nextElement();
if (node.isLeaf()) {
allLeaf.add(node);
}
}
}
}public class TreeTest {
public static void main(String[] args) {
new TreeFrame();
}
}