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

来源:互联网 发布:淘宝传单设计店怎么样? 编辑:程序博客网 时间:2024/05/16 19:36
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
原创粉丝点击