在JTree的节点上使用gif动画图标
2007-06-03 15:49
323 查看
class NodeImageObserver implements ImageObserver {
JTree tree;
DefaultTreeModel model;
Vector nodes = new Vector();
public NodeImageObserver(JTree tree) {
super();
this.tree = tree;
this.model = (DefaultTreeModel) tree.getModel();
}
public void add(DefaultMutableTreeNode node) {
for (int i = 0; i < nodes.size(); ++i) {
DefaultMutableTreeNode temp = (DefaultMutableTreeNode)nodes.get(i);
if (temp.equals(node))
return;
}
nodes.add(node);
}
NodeImageObserver(JTree tree, Vector nodes) {
this.tree = tree;
this.model = (DefaultTreeModel) tree.getModel();
this.nodes = nodes;
}
public boolean imageUpdate(Image img, int flags, int x, int y, int w,
int h) {
if ((flags & (FRAMEBITS | ALLBITS)) != 0) {
for(int i = 0; i < nodes.size(); ++i) {
TreeNode node = (TreeNode) nodes.get(i);
TreePath path = new TreePath(model.getPathToRoot(node));
java.awt.Rectangle rect = tree.getPathBounds(path);
if (rect != null) {
tree.repaint(rect);
}
}
}
return (flags & (ALLBITS | ABORT)) == 0;
}
}
class MyTree extends JTree {
public DefaultTreeModel model;
public MyTree() {
super();
setCellRenderer(new IconRenderer());
model = new DefaultTreeModel(null);
this.setModel(model);
}
class IconRenderer extends 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);
DefaultMutableTreeNode node = (DefaultMutableTreeNode)value;
ImageIcon gificon = new ImageIcon("node.gif");
NodeImageObserver Observer = new NodeImageObserver(tree);
Observer.add(node);
gificon.setImageObserver(Observer);
setIcon(gificon);
return this;
}
}
}
JTree tree;
DefaultTreeModel model;
Vector nodes = new Vector();
public NodeImageObserver(JTree tree) {
super();
this.tree = tree;
this.model = (DefaultTreeModel) tree.getModel();
}
public void add(DefaultMutableTreeNode node) {
for (int i = 0; i < nodes.size(); ++i) {
DefaultMutableTreeNode temp = (DefaultMutableTreeNode)nodes.get(i);
if (temp.equals(node))
return;
}
nodes.add(node);
}
NodeImageObserver(JTree tree, Vector nodes) {
this.tree = tree;
this.model = (DefaultTreeModel) tree.getModel();
this.nodes = nodes;
}
public boolean imageUpdate(Image img, int flags, int x, int y, int w,
int h) {
if ((flags & (FRAMEBITS | ALLBITS)) != 0) {
for(int i = 0; i < nodes.size(); ++i) {
TreeNode node = (TreeNode) nodes.get(i);
TreePath path = new TreePath(model.getPathToRoot(node));
java.awt.Rectangle rect = tree.getPathBounds(path);
if (rect != null) {
tree.repaint(rect);
}
}
}
return (flags & (ALLBITS | ABORT)) == 0;
}
}
class MyTree extends JTree {
public DefaultTreeModel model;
public MyTree() {
super();
setCellRenderer(new IconRenderer());
model = new DefaultTreeModel(null);
this.setModel(model);
}
class IconRenderer extends 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);
DefaultMutableTreeNode node = (DefaultMutableTreeNode)value;
ImageIcon gificon = new ImageIcon("node.gif");
NodeImageObserver Observer = new NodeImageObserver(tree);
Observer.add(node);
gificon.setImageObserver(Observer);
setIcon(gificon);
return this;
}
}
}
相关文章推荐
- 使用JMagick生成GIF动画图片
- Delphi使用Image显示gif动画
- 使用jQuery来实现菜单文字和图标动画效果
- JTree 方法设置树节点的展开图标
- Jtree的使用方法-swing 一共很多个例子--添加节点--先序遍历
- 使用gifcam软件截取gif程序运行动画让你的博客更形象生动
- jstree使用【三】根据节点类型更换节点图标
- IOS使用UIImageView显示gif动画的例子
- vs2008和vs10以及Windows Phone自带的1000多个 Windows 系统使用的各种图标、光标和动画文件
- 使用定时器显示GIF动画的ATL控件实现
- 使用 Piecon 生成动感的网页图标加载动画
- JTree绘制节点图标的方法
- 使用gifView加载gif动画
- 安卓学习笔记--- Android加载Gif动画android-gif-drawable的使用
- 【Unity3D】GIF与序列帧动画的使用
- 完美实现GIF动画缩略图(GIF压缩使用C++、shell命令、php)
- Android使用glide加载gif动画设置播放次数
- Android界面布局中使用GIF动画
- 使用Qt显示GIF格式动画
- 單純使用PHP腳本不借助任何外部库或图片以及字体产生动画效果的Gif验证码图片