设置JTree树形结构文字的颜色以及文字背景颜色的方法_-Chaz-_新浪博客
可恶的**人寿,要求总是变来变去,哎,没办法!客户需求第一嘛......(心虚啊)
今天又提出变更软件的总体颜色.哎,麻烦死了... 做到最后,发现有个问题就是要改变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-_新浪博客相关推荐
- latex如何设置字体并加粗_Latex设置字体大小,加粗,加下划线,变斜体_孩纸气_新浪博客...
Latex 设置字体大小命令由小到大依次为: \tiny \scriptsize \footnotesize \small \normalsize \large \Large \LARGE \huge ...
- 谷歌浏览器背景设置_akala啦_新浪博客
这两天上网感觉眼睛有些累 所以上网搜索了一下怎样改网页背景色 我用的是谷歌浏览器 1 在Chrome Web Store 里搜多stylist插件并安装 https://chrome.goog ...
- java path JAVA_HOME class的设置及其用意_bin910729_新浪博客
今天再次设置java的环境变量,突然发现每次设置都只是按照步骤一步步将其设置完,并不了解为啥要设置,于是上网找了找,找到遍文章,觉得不错,就留下了. 仅供记录学习.转自:http://b ...
- 打印机设置为双面打印_hudingyin_新浪博客
一般情况下,打印pdf文档时都会出现双面打印的选项框 如果没有,可以进行如下设置: 1. 右击打印机→打印机属性 2. 选择设备设置→Duplex Unit设置成Installed (开始是unin ...
- 常用分辨率设置,RGB与CMYK_几何途行_新浪博客
常用分辨率设置: 洗印照片: 300像素/英寸以上 印刷物( 杂志,名片等 ): 300像素/英寸 海报: 96-200像素/英寸 电子设备显示(网络图片,网页界面): ...
- 结构静力分析与动力学分析_51CAE_新浪博客
一.静力分析 用来求解外载荷引起的位移.应力和约束反力.静力分析很适合求解惯性和阻尼对结构的影响并不显著的问题.静力分析不仅可以进行线性分析,而且也可以进行非线性分析,结构非线性导致结构或部件的响应随 ...
- DPK8300E+设置 (打印乱码)_七夕小子_新浪博客
DPK8x00E+系列打印机内置三种仿真:OKI5320仿真.LQ1600K+仿真和税票仿真(出厂默认仿真为税票仿真),如果打印机的仿真设置为5320仿真,则需安装"OKI5320仿真&qu ...
- ANSYS/Icepak自然对流计算区域设置_51CAE_新浪博客
在对流换热中,因为冷.热流体的密度差引起的流动,称为自然对流. 自然对流计算区域的设置 在ANSYS/Icepak中进行自然对流计算时,需要对其设置相应的计算区域.Cabinet表示计算区域的空间,其 ...
- 数组、指针、结构体的总结_吃鱼的小脸猫_新浪博客
一.结构体和数组的区别 1.定义一个结构体是为方便保存不同类型的数据,而不同类型的数据放在一个结构体中 2.定义数组也是为方便存储大量数据,但数据必须是同一类型 3. 结构体中也包括结构体数组和结构体 ...
- vb屏幕分辨率设置和获取_hawkol_新浪博客
窗体控件 Command1 Command1 Command1 '窗体代码: Private Sub Command1_Click() SetDisplaymode 800, 600 End Sub ...
最新文章
- (C++)1018 锤子剪刀布
- 深入理解Objective-C:Category
- Python可视化 | Matplotlib绘制圆环图的两种方法!
- Is this a MS EnterLib DAAB BUG or not?
- 【LCT】Tree II(luogu 1501)
- 字符驱动之按键(四:poll机制)
- Word2vec加TextRank算法生成文章摘要
- 关于Patch应用和举例
- uV胶点胶机器人_解析手机用粘合剂十大用胶点
- 小米9se刷机,miui12.5.1降级miui11.0.5,救砖,magisk面具,viper音效-刷红米6
- shell 脚本案例
- 数字图像处理——Sobel算子锐化、Prewitt算子锐化
- 领航致远_李腾飞老师javascript_html_css视频教程
- 【渗透测试实战】—社会工程学利用详解
- c语言中getc函数,C语言中getc怎么用?
- C# ——字符添加角标
- IT男青年应该献身文艺女青年的十大理由
- HEVC-环路滤波 之去块效应滤波
- 理解PBR:从原理到实现(上)
- EEGLAB | 创建events事件导入eeglab