JTree 默认显示多个节点被选中

	private JTree TreeSelectedContainer() {	
		TreeInfo = GoogleInformation.navagation;

        DefaultMutableTreeNode root = new DefaultMutableTreeNode("Google News Category");  
        
        DefaultMutableTreeNode[] node = new DefaultMutableTreeNode[TreeInfo.size()];
  
        DefaultTreeModel treeModel = new DefaultTreeModel(root);  
        //插入子节点node1,node2  
        System.out.println("st.NewStorySelected.size() :\t"+st.NewStorySelected.size());
        TreePath[] SelectedNS = new TreePath[100];
        int CountNS = 0;
        
        for(int i=0; i< TreeInfo.size(); i++)
        {
        	node[i] = new DefaultMutableTreeNode( TreeInfo.get(i).name);
        	treeModel.insertNodeInto(node[i],root,root.getChildCount());  
        	
        	 DefaultMutableTreeNode[] leafnode = new DefaultMutableTreeNode[TreeInfo.get(i).child.size()];
        	for(int j =0 ; j < TreeInfo.get(i).child.size(); j++)
        	{
        		leafnode[j] = new DefaultMutableTreeNode(TreeInfo.get(i).child.get(j).name);
        		treeModel.insertNodeInto(leafnode[j],node[i],node[i].getChildCount()); 
        		for(int find_i = 0; find_i < st.NewStorySelected.size(); find_i++)
        		{
        			if((st.NewStorySelected.get(find_i)).equals((TreeInfo.get(i).child.get(j).name)))
        			{
	         				<span style="background-color: rgb(255, 255, 51);">TreePath path = new TreePath(leafnode[j].getPath());</span>
	        				//System.out.println("\n"+CountNS+"\t"+st.NewStorySelected.get(find_i)+"\t"+TreeInfo.get(i).child.get(j).name);
	        				<span style="background-color: rgb(255, 255, 51);">SelectedNS[CountNS] = path;</span>
	        				CountNS++;       					
        				

        				
        			}
        		}
        		

        	}
        	 
        }
        
        //创建树对象  
        JTree tree = new JTree(treeModel); 

//		TreePath visiblePath = new TreePath(getTreeModel().getPathToRoot(leafnode[j]));
        <span style="background-color: rgb(255, 255, 51);">tree.addSelectionPaths(SelectedNS);//TreePath[]</span>
        
        
        //设置Tree的选择为一次选择多个节点  
        tree.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUOUS_TREE_SELECTION);
//                            TreeSelectionModel.SINGLE_TREE_SELECTION);  这个是一次只能选择一个节点的选项
  
  
        //创建节点绘制对象  
        DefaultTreeCellRenderer cellRenderer =  
                            (DefaultTreeCellRenderer)tree.getCellRenderer();  
  
        //设置字体  
        cellRenderer.setFont(new Font("Serif",Font.PLAIN,14));  
        cellRenderer.setBackgroundNonSelectionColor(Color.white);  
        cellRenderer.setBackgroundSelectionColor(Color.yellow);  
//        cellRenderer.setBorderSelectionColor(Color.red);  
  
        //设置选或不选时,文字的变化颜色  
        cellRenderer.setTextNonSelectionColor(Color.black);  
        cellRenderer.setTextSelectionColor(Color.blue);  
          
        return tree;
	}


最终用了笨办法加亮所选的几个NewsStory。"St"是传入的Setting的设置的一些信息,其中包括在第一个页面中选取的News Story。找到他们对应的Path,然后添加到到所选里面。关键的代码用黄色高亮。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值