`

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

阅读更多
MyDefaultTreeCellRenderer.java

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;
	}

}


TreeIconDemo.java
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);
	}

}
分享到:
评论
1 楼 HAO_FISH 2014-10-28  
import java.*;

相关推荐

Global site tag (gtag.js) - Google Analytics