如何设置jtree 图标
来源:互联网 发布:godaddy域名赎回后解析 编辑:程序博客网 时间:2024/05/16 05:34
import
java.awt.*;
import
java.awt.image.BufferedImage;
import
java.io.*;
import
javax.imageio.ImageIO;
import
javax.swing.*;
import
javax.swing.tree.*;
public
class
TreeIcons
{
BufferedImage[] images;
public
TreeIcons(BufferedImage[] images)
{
this
.images = images;
}
private
JPanel getContent()
{
JPanel panel =
new
JPanel(
new
GridLayout(
1
,
0
));
panel.add(
new
JScrollPane(getLeftTree()));
panel.add(
new
JScrollPane(getRightTree()));
return
panel;
}
private
JTree getLeftTree()
{
JTree tree = getTree();
DefaultTreeCellRenderer renderer =
(DefaultTreeCellRenderer)tree.getCellRenderer();
// make changes to renderer for this tree
// works okay if the size of the new images does
// not exceed the size of the default images
renderer.setClosedIcon(
new
ImageIcon(images[
0
]));
renderer.setOpenIcon(
new
ImageIcon(images[
1
]));
renderer.setLeafIcon(
new
ImageIcon(images[
2
]));
return
tree;
}
private
JTree getRightTree()
{
JTree tree = getTree();
// set a renderer that allows more fine-grained
// control of rendering for varying conditions
tree.setCellRenderer(
new
IconRenderer(images));
return
tree;
}
private
JTree getTree()
{
String[] birds = {
// branches |<-- child leaf nodes -->|
"hawks"
,
"gray"
,
"red-tailed"
,
"rough-legged"
,
"falcons"
,
"harrier"
,
"kestrel"
,
"kite"
,
"owls"
,
"barred"
,
"saw-whet"
,
"snowy"
};
DefaultMutableTreeNode root =
new
DefaultMutableTreeNode(
"birds"
);
DefaultMutableTreeNode[] nodes =
new
DefaultMutableTreeNode[birds.length];
for
(
int
j =
0
; j < nodes.length; j++)
nodes[j] =
new
DefaultMutableTreeNode(birds[j]);
for
(
int
j =
0
; j <
9
; j +=
4
)
{
root.insert(nodes[j], j %
3
);
for
(
int
k = j +
1
; k < j +
4
; k++)
nodes[j].insert(nodes[k], k - j -
1
);
}
DefaultTreeModel model =
new
DefaultTreeModel(root);
return
new
JTree(model);
}
public
static
void
main(String[] args)
throws
IOException
{
String[] ids = {
"closed16"
,
"open16"
,
"leaf16"
};
BufferedImage[] bis =
new
BufferedImage[ids.length];
for
(
int
j =
0
; j < bis.length; j++)
bis[j] = ImageIO.read(
new
File(
"images/"
+ ids[j] +
".gif"
));
// to make uniform changes for all JTrees in this app
//UIManager.put("Tree.closedIcon", new ImageIcon(bis[0]));
//UIManager.put("Tree.openIcon", new ImageIcon(bis[1]));
//UIManager.put("Tree.leafIcon", new ImageIcon(bis[2]));
JFrame f =
new
JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setContentPane(
new
TreeIcons(bis).getContent());
f.setSize(
500
,
400
);
f.setLocation(
200
,
200
);
f.setVisible(
true
);
}
}
class
IconRenderer
extends
DefaultTreeCellRenderer
{
ImageIcon closedIcon;
ImageIcon openIcon;
ImageIcon leafIcon;
public
IconRenderer(BufferedImage[] images)
{
closedIcon =
new
ImageIcon(images[
0
]);
openIcon =
new
ImageIcon(images[
1
]);
leafIcon =
new
ImageIcon(images[
2
]);
}
public
Component getTreeCellRendererComponent(JTree tree,
Object value,
boolean
sel,
boolean
expanded,
boolean
leaf,
int
row,
boolean
hasFocus)
{
// start with default behavior
super
.getTreeCellRendererComponent(tree, value, sel, expanded,
leaf, row, hasFocus);
// customize based on local conditions/state
DefaultMutableTreeNode node = (DefaultMutableTreeNode)value;
String userObject = (String)node.getUserObject();
boolean
isOwl = userObject.equalsIgnoreCase(
"owls"
);
if
(isOwl)
setIcon(closedIcon);
else
if
(leaf)
setIcon(leafIcon);
else
if
(expanded)
setIcon(openIcon);
return
this
;
}
}
0 0
- 如何设置jtree 图标
- JTREE节点不选中如何设置?
- JTree 方法设置树节点的展开图标
- 将JTree的每个节点设置成不同的图标
- Jtree添加图标
- 修改JTree的图标
- 如何设置系统托盘图标
- 改变Jtree节点的图标
- JTree 不同叶子节点图标
- 修改jtree的节点图标
- JTree,将树的每个节点设置成不同的图标
- 如何使用JTree
- 如何使用 Jtree
- 如何使用JTree
- 如何使用JTree
- 如何使用 Jtree
- 如何设置网站的图标
- 如何设置网站的图标
- 一目了然的二分查找
- Mybatis分页插件
- oracle如何创建Database Link
- Tensorflow常见错误
- UVa699 The Falling Leaves
- 如何设置jtree 图标
- 通道控制方式
- spring编程式事务管理
- iOS开发从入门到精通--基础组件UILabel
- 指数型母函数及模板(HDOJ 1521)
- Linux文章汇总
- eclipse代码颜色设置
- 【TJOI & HEOI 2016】【BZOJ 4556】【JZOJ 4614】 游戏
- Codeforces Round #343 (Div. 2) C. Famil Door and Brackets(简单dp)