可恶的**人寿,要求总是变来变去,哎,没办法!客户需求第一嘛......(心虚啊)
今天又提出变更软件的总体颜色.哎,麻烦死了... 做到最后,发现有个问题就是要改变JTree的文字默认颜色以及文字背景色,查了一下相关资料,终于找到了解决办法:
(该例子在eclipse3.3上调试通过)
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;

public class SimpleTree extends JFrame {
JPanel contentPane;

JScrollPane scrollPane = new JScrollPane();

MyTree tree = new MyTree();

DefaultTreeModel treeModel = (DefaultTreeModel) tree.getModel();

NodeRenderer renderer = new NodeRenderer();

private TreeMouseHandler treeMouseListener = new TreeMouseHandler();

// Constructor
public SimpleTree() {
   enableEvents(AWTEvent.WINDOW_EVENT_MASK);
   try {
    jbInit();
   } catch (Exception e) {
    e.printStackTrace();
   }
}

// Component initialization
private void jbInit() throws Exception {
   tree.setEditable(false);
   tree.setShowsRootHandles(true);
   tree.getSelectionModel().setSelectionMode(
     TreeSelectionModel.SINGLE_TREE_SELECTION);
   tree.setExpandsSelectedPaths(true);
   tree.addMouseListener(treeMouseListener);
   tree.setCellRenderer(renderer);
   tree.addTreeExpansionListener(new TreeExpansionListener() {
    public void treeCollapsed(TreeExpansionEvent evt) {
    }

public void treeExpanded(TreeExpansionEvent evt) {
    }
   });

contentPane = (JPanel) this.getContentPane();
   this.setTitle("MyFrame");
   scrollPane.getViewport().add(tree, null);
   contentPane.add(scrollPane, BorderLayout.CENTER);
}

// Overridden so we can exit when window is closed
protected void processWindowEvent(WindowEvent e) {
   super.processWindowEvent(e);
   if (e.getID() == WindowEvent.WINDOW_CLOSING) {
    System.exit(0);
   }
}

public static void main(String[] args) {
   SimpleTree simpleTree = new SimpleTree();
   simpleTree.setSize(800, 600);
   simpleTree.show();
}

private class TreeMouseHandler extends MouseAdapter {
   public void mousePressed(MouseEvent e) {
    if (SwingUtilities.isLeftMouseButton(e) == false) {
     return;
    }
    System.out.println("mousePressed");
   }

public void mouseClicked(MouseEvent e) {
    if ((SwingUtilities.isLeftMouseButton(e) == false)) {
     return;
    }
    TreePath[] selectedPaths = tree.getSelectionPaths();
    if ((selectedPaths == null) || (selectedPaths.length == 0)) {
     return;
    }
    if (selectedPaths.length == 1) {
     if (e.getClickCount() == 1) {
      System.out
        .println("mouseClicked:   left   button   *   1   :   "
          + selectedPaths[0]);
     } else if (e.getClickCount() == 2) {
      System.out
        .println("mouseClicked:   left   button   *   2   :   "
          + selectedPaths[0]);
     }
    }
   }
}

class MyTree extends JTree {
   public MyTree() {
    DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("root");
    DefaultMutableTreeNode sub1Node = new DefaultMutableTreeNode("sub1");
    rootNode.add(sub1Node);

DefaultMutableTreeNode n = new DefaultMutableTreeNode("011");
    sub1Node.add(n);
    n.add(new DefaultMutableTreeNode("111"));
    n.add(new DefaultMutableTreeNode("112"));
    n.add(new DefaultMutableTreeNode("113"));

n = new DefaultMutableTreeNode("012");
    sub1Node.add(n);
    n.add(new DefaultMutableTreeNode("121"));
    n.add(new DefaultMutableTreeNode("122"));
    n.add(new DefaultMutableTreeNode("123"));

this.setModel(new DefaultTreeModel(rootNode));
   }
}

class NodeRenderer extends DefaultTreeCellRenderer {
   public Component getTreeCellRendererComponent(JTree tree, Object value,
     boolean selected, boolean expanded, boolean leaf, int row,
     boolean hasFocus) {
    DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
    super.getTreeCellRendererComponent(tree, value, selected, expanded,
      leaf, row, hasFocus);
    if (node.getUserObject().toString().trim().equals("011")) {

setForeground(Color.RED);  
     setTextSelectionColor(Color.BLUE);
     setBackgroundSelectionColor(Color.GREEN);
     setBackgroundNonSelectionColor(Color.WHITE);

}
    return this;
   }
}

}

设置JTree树形结构文字的颜色以及文字背景颜色的方法_-Chaz-_新浪博客相关推荐

  1. latex如何设置字体并加粗_Latex设置字体大小,加粗,加下划线,变斜体_孩纸气_新浪博客...

    Latex 设置字体大小命令由小到大依次为: \tiny \scriptsize \footnotesize \small \normalsize \large \Large \LARGE \huge ...

  2. 谷歌浏览器背景设置_akala啦_新浪博客

    这两天上网感觉眼睛有些累    所以上网搜索了一下怎样改网页背景色  我用的是谷歌浏览器 1 在Chrome Web Store 里搜多stylist插件并安装 https://chrome.goog ...

  3. java path JAVA_HOME class的设置及其用意_bin910729_新浪博客

     今天再次设置java的环境变量,突然发现每次设置都只是按照步骤一步步将其设置完,并不了解为啥要设置,于是上网找了找,找到遍文章,觉得不错,就留下了.       仅供记录学习.转自:http://b ...

  4. 打印机设置为双面打印_hudingyin_新浪博客

    一般情况下,打印pdf文档时都会出现双面打印的选项框 如果没有,可以进行如下设置: 1.  右击打印机→打印机属性 2. 选择设备设置→Duplex Unit设置成Installed (开始是unin ...

  5. 常用分辨率设置,RGB与CMYK_几何途行_新浪博客

    常用分辨率设置:​ 洗印照片:     300像素/英寸以上 印刷物( 杂志,名片等 ):    300像素/英寸 海报:       96-200像素/英寸 电子设备显示(网络图片,网页界面):   ...

  6. 结构静力分析与动力学分析_51CAE_新浪博客

    一.静力分析 用来求解外载荷引起的位移.应力和约束反力.静力分析很适合求解惯性和阻尼对结构的影响并不显著的问题.静力分析不仅可以进行线性分析,而且也可以进行非线性分析,结构非线性导致结构或部件的响应随 ...

  7. DPK8300E+设置 (打印乱码)_七夕小子_新浪博客

    DPK8x00E+系列打印机内置三种仿真:OKI5320仿真.LQ1600K+仿真和税票仿真(出厂默认仿真为税票仿真),如果打印机的仿真设置为5320仿真,则需安装"OKI5320仿真&qu ...

  8. ANSYS/Icepak自然对流计算区域设置_51CAE_新浪博客

    在对流换热中,因为冷.热流体的密度差引起的流动,称为自然对流. 自然对流计算区域的设置 在ANSYS/Icepak中进行自然对流计算时,需要对其设置相应的计算区域.Cabinet表示计算区域的空间,其 ...

  9. 数组、指针、结构体的总结_吃鱼的小脸猫_新浪博客

    一.结构体和数组的区别 1.定义一个结构体是为方便保存不同类型的数据,而不同类型的数据放在一个结构体中 2.定义数组也是为方便存储大量数据,但数据必须是同一类型 3. 结构体中也包括结构体数组和结构体 ...

  10. vb屏幕分辨率设置和获取_hawkol_新浪博客

    窗体控件 ​Command1 Command1 Command1 '窗体代码: Private Sub Command1_Click() SetDisplaymode 800, 600 End Sub ...

最新文章

  1. (C++)1018 锤子剪刀布
  2. 深入理解Objective-C:Category
  3. Python可视化 | Matplotlib绘制圆环图的两种方法!
  4. Is this a MS EnterLib DAAB BUG or not?
  5. 【LCT】Tree II(luogu 1501)
  6. 字符驱动之按键(四:poll机制)
  7. Word2vec加TextRank算法生成文章摘要
  8. 关于Patch应用和举例
  9. uV胶点胶机器人_解析手机用粘合剂十大用胶点
  10. 小米9se刷机,miui12.5.1降级miui11.0.5,救砖,magisk面具,viper音效-刷红米6
  11. shell 脚本案例
  12. 数字图像处理——Sobel算子锐化、Prewitt算子锐化
  13. 领航致远_李腾飞老师javascript_html_css视频教程
  14. 【渗透测试实战】—社会工程学利用详解
  15. c语言中getc函数,C语言中getc怎么用?
  16. C# ——字符添加角标
  17. IT男青年应该献身文艺女青年的十大理由
  18. HEVC-环路滤波 之去块效应滤波
  19. 理解PBR:从原理到实现(上)
  20. EEGLAB | 创建events事件导入eeglab

热门文章

  1. 期货交易中的量价关系
  2. 注销 睡眠 休眠的区别
  3. centos7安装Memcached
  4. 关于Ant Design中的Modal组件的各种回调方法在调用后台时报页面崩溃的错误。
  5. 运用计算机技术和语文教学,计算机信息技术与小学语文教学整合的优势
  6. 计算机回收站设置大小,电脑怎么设置回收站容量 电脑回收站的数据文件位置在哪...
  7. 金蝶移动bos开发教程_移动BOS开发技巧
  8. 云编程那些事2 - Java之父的啤酒密谋
  9. 史上最全微信域名防封API原理及实现方案
  10. GEE主成分分析全解析