JTree的问题请教! 问个问题!JTree中结点字体颜色能不能自己设定我想做个带有颜色提示的树,如果实在不行,能不能更换结点前面的图标! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ImageIcon leafIcon = createImageIcon("images/middle.gif");if (leafIcon != null) { DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer(); renderer.setLeafIcon(leafIcon); tree.setCellRenderer(renderer);}这样就可以了设置图案了DefaultTreeCellRenderer参考这个类 API 这样的话你就应该创建一个TreeCellRender的实现类自己自定义你的需求 jTree1.setCellRenderer(new DefaultTreeCellRenderer(){ 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); if(leaf) { System.out.println(value.toString()); setTextNonSelectionColor(getColor(value)); } return this; } }); protected Color getColor(Object value) { Color tColor; if (value.toString().equals("男")) { tColor = Color.red; } else { tColor = Color.blue; } return tColor; }这个存在问题:1、通过输出System.out.println(value.toString());来看,怎么不是遍历一遍呢2、setTextNonSelectionColor(getColor(value));颜色设置怎么不对在线等带高手帮助!!!! package pkg;import java.awt.*;import javax.swing.*;import javax.swing.tree.*;public class CellRender extends DefaultTreeCellRenderer implements TreeCellRenderer { protected Color selectedBackground; protected Color selectedForeground; protected Color noselectedBackground; protected Color noselectedForeground; protected Color overflowBackground = Color.yellow; protected Color overflowForeground = Color.red; protected Color overflowSelectedBG = Color.green; protected Color overflowSelectedFG = Color.black; public CellRender() { super(); }//重载getTreeCellRendererComponent方法 public Component getTreeCellRendererComponent(JTree tree,Object value,boolean selected,boolean expanded,boolean leaf,int row,boolean hasFocus) { if (value==null || row<0)return this; DefaultMutableTreeNode node = (DefaultMutableTreeNode) value; Node nd = (Node) node.getUserObject(); if (nd.name.equals("6")) { if (selected) { this.setForeground(Color.red); } else { this.setForeground(Color.red); } } else { if (selected) { this.setForeground(Color.red); } else { this.setForeground(Color.green); } } //this.firePropertyChange("leafIcon",this.getLeafIcon(),new ImageIcon("c:\\leaf.gif")); this.setLeafIcon(new ImageIcon("c:\\leaf.gif")); this.setOpenIcon(new ImageIcon("c:\\open.gif")); this.setClosedIcon(new ImageIcon("c:\\close.gif")); this.setFont(new Font("Dialog",0,18)); this.setBackground(Color.black); return this; }} 在另一个程序中调用该类:jTree1.setCellRenderer(new CellRender());怎么有些属性能改变,比如:this.setFont(new Font("Dialog",0,18));有些属性怎么不能改变,比如:this.setLeafIcon(new ImageIcon(".\\pic\\leaf.gif"));this.setOpenIcon(new ImageIcon(".\\pic\\leaf.gif"));this.setClosedIcon(new ImageIcon(".\\pic\\leaf.gif"));以及:this.setBackgroud(Color.blue);为什么呢? 高手进来~鼠标监听器怎么实现的? 请问怎么提取字符串中的中文和数字? HashMap和Hashtable 之原代码详解 (本人原创) 怎样使对话框右上角的关闭按钮,最大化按钮无效(即屏蔽这两个按钮) 直接运行可执行的jar文件的问题 一个C语言程序希望修改成JAVA程序中的一个类的成员函数 程序蛮大,希望大虾们能抽点时间看下~~谢谢了。 关于jtable的问题 如何获取今天之前上一周的周1和周日的日期!急等 java ide have? 哪里有 java.nio.*的包???????????? 求助各位高手如何学习!!! import javax.servlet.*; 提示包没找到?
if (leafIcon != null) {
DefaultTreeCellRenderer renderer =
new DefaultTreeCellRenderer();
renderer.setLeafIcon(leafIcon);
tree.setCellRenderer(renderer);
}这样就可以了设置图案了DefaultTreeCellRenderer参考这个类 API
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);
if(leaf)
{
System.out.println(value.toString());
setTextNonSelectionColor(getColor(value));
}
return this;
}
}); protected Color getColor(Object value) {
Color tColor;
if (value.toString().equals("男"))
{
tColor = Color.red;
}
else
{
tColor = Color.blue;
}
return tColor;
}这个存在问题:
1、通过输出System.out.println(value.toString());来看,怎么不是遍历一遍呢
2、setTextNonSelectionColor(getColor(value));颜色设置怎么不对在线等带高手帮助!!!!
import javax.swing.*;
import javax.swing.tree.*;
public class CellRender extends DefaultTreeCellRenderer implements TreeCellRenderer {
protected Color selectedBackground;
protected Color selectedForeground;
protected Color noselectedBackground;
protected Color noselectedForeground;
protected Color overflowBackground = Color.yellow;
protected Color overflowForeground = Color.red;
protected Color overflowSelectedBG = Color.green;
protected Color overflowSelectedFG = Color.black;
public CellRender()
{
super();
}
//重载getTreeCellRendererComponent方法
public Component getTreeCellRendererComponent(JTree tree,Object value,boolean selected,boolean expanded,boolean leaf,int row,boolean hasFocus)
{
if (value==null || row<0)return this;
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
Node nd = (Node) node.getUserObject();
if (nd.name.equals("6"))
{
if (selected) {
this.setForeground(Color.red);
}
else {
this.setForeground(Color.red);
}
}
else
{
if (selected) {
this.setForeground(Color.red);
}
else {
this.setForeground(Color.green);
}
}
//this.firePropertyChange("leafIcon",this.getLeafIcon(),new ImageIcon("c:\\leaf.gif"));
this.setLeafIcon(new ImageIcon("c:\\leaf.gif"));
this.setOpenIcon(new ImageIcon("c:\\open.gif"));
this.setClosedIcon(new ImageIcon("c:\\close.gif"));
this.setFont(new Font("Dialog",0,18));
this.setBackground(Color.black);
return this;
}}
在另一个程序中调用该类:
jTree1.setCellRenderer(new CellRender());
怎么有些属性能改变,比如:
this.setFont(new Font("Dialog",0,18));有些属性怎么不能改变,比如:
this.setLeafIcon(new ImageIcon(".\\pic\\leaf.gif"));
this.setOpenIcon(new ImageIcon(".\\pic\\leaf.gif"));
this.setClosedIcon(new ImageIcon(".\\pic\\leaf.gif"));
以及:
this.setBackgroud(Color.blue);为什么呢?