java swing 树型结构

package swing_advance;
import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.*;

import java.awt.*;
import java.beans.PropertyChangeListener;

public class TreeSelection extends JFrame {
	
	public TreeSelection(){
		Container c=getContentPane();
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
	    setSize(200,300);
	    
	    
	    
	    
	    DefaultMutableTreeNode root = new DefaultMutableTreeNode("根节点");
	    DefaultMutableTreeNode child1 = new DefaultMutableTreeNode("子节点A");
	    DefaultMutableTreeNode child2 = new DefaultMutableTreeNode("子节点B");
	    
	    DefaultMutableTreeNode childchild1 = new DefaultMutableTreeNode("子节点AA",false);
	    DefaultMutableTreeNode childchild2 = new DefaultMutableTreeNode("子节点BB",false);
	    
	    root.add(child1);
	    root.add(child2);
	    child1.add(childchild1);
	    child2.add(childchild2);
	    DefaultTreeModel dt=new DefaultTreeModel(root,true);
	    final JTree jt = new JTree(dt);
	    
	    c.add(jt,BorderLayout.WEST);
	    setVisible(true);
	    
	    TreeSelectionModel treeselect = jt.getSelectionModel();
	    treeselect.setSelectionMode(TreeSelectionModel.CONTIGUOUS_TREE_SELECTION);
	    
	    jt.addTreeSelectionListener(new TreeSelectionListener() {
			
			@Override
			public void valueChanged(TreeSelectionEvent e) {
				// TODO Auto-generated method stub
				if(!jt.isSelectionEmpty()){
					TreePath[] selectionpath=jt.getSelectionPaths();  //获得所有被选中的节点
					for(int i=0;i<selectionpath.length;i++){
						TreePath treepath=selectionpath[i];  
						//object 数组的形式返回数组
						Object[] path=treepath.getPath();
						for(int j=0;j<path.length;j++){
							DefaultMutableTreeNode node=(DefaultMutableTreeNode)path[i];
							String s=node.getUserObject()+(j==(path.length-1)?"":"-->");
							System.out.println(s);
							
						}
						System.out.println();
						
					}
				}
			}
		});
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new TreeSelection();
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值