将JTree的每个节点设置成不同的图标

来源:互联网 发布:web数据挖掘的特点 编辑:程序博客网 时间:2024/05/06 01:01



import java.awt.Component;    import javax.swing.ImageIcon;  import javax.swing.JTree;  import javax.swing.tree.DefaultMutableTreeNode;  import javax.swing.tree.DefaultTreeCellRenderer;    /**  * 自定义树描述类,将树的每个节点设置成不同的图标  * @author RuiLin.Xie - xKF24276  *  */  public class MyDefaultTreeCellRenderer extends DefaultTreeCellRenderer  {      /**      * ID      */      private static final long   serialVersionUID    = 1L;        /**      * 重写父类DefaultTreeCellRenderer的方法      */      @Override      public Component getTreeCellRendererComponent(JTree tree, Object value,              boolean sel, boolean expanded, boolean leaf, int row,              boolean hasFocus)      {            //执行父类原型操作          super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf,                  row, hasFocus);            setText(value.toString());                    if (sel)          {              setForeground(getTextSelectionColor());          }          else          {              setForeground(getTextNonSelectionColor());          }                    //得到每个节点的TreeNode          DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;                    //得到每个节点的text          String str = node.toString();                           //判断是哪个文本的节点设置对应的值(这里如果节点传入的是一个实体,则可以根据实体里面的一个类型属性来显示对应的图标)          if (str == "a")          {              this.setIcon(new ImageIcon("treeimg/a.GIF"));          }          if (str == "b")          {              this.setIcon(new ImageIcon("treeimg/b.GIF"));          }          if (str == "c")          {              this.setIcon(new ImageIcon("treeimg/c.GIF"));          }            return this;      }    }  

import java.awt.BorderLayout;  import javax.swing.JFrame;  import javax.swing.JScrollPane;  import javax.swing.JTree;  import javax.swing.tree.DefaultMutableTreeNode;  import javax.swing.tree.DefaultTreeModel;    public class TreeIconDemo extends JFrame  {        /**      * ID      */      private static final long   serialVersionUID    = 1L;            private JTree   tree;        /**      * Launch the application      *       * @param args      */      public static void main(String args[])      {          try          {              TreeIconDemo frame = new TreeIconDemo();              frame.setVisible(true);          }          catch (Exception e)          {              e.printStackTrace();          }      }        /**      * Create the frame      */      public TreeIconDemo()      {          super();          setBounds(100, 100, 500, 375);          setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);            final JScrollPane scrollPane = new JScrollPane();          getContentPane().add(scrollPane, BorderLayout.CENTER);            tree = new JTree();          scrollPane.setViewportView(tree);            //创建数据          DefaultTreeModel defaultTreeModel = createModel();                    //设置数据          tree.setModel(defaultTreeModel);                    //设置自定义描述类          tree.setCellRenderer(new MyDefaultTreeCellRenderer());      }        /**      * 创建树节点模型      * @return      */      public DefaultTreeModel createModel()      {          DefaultMutableTreeNode root = new DefaultMutableTreeNode("a");          DefaultMutableTreeNode b = new DefaultMutableTreeNode("b");          DefaultMutableTreeNode c = new DefaultMutableTreeNode("c");          root.add(b);          root.add(c);          return new DefaultTreeModel(root);      }    }  


0 0
原创粉丝点击