JTree绘制的问题

zombieLi 2003-10-16 03:59:47
怎样使JTree的每一个节点的高度都不一致呀。紧急求助
...全文
44 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zombieLi 2003-10-16
  • 打赏
  • 举报
回复
多谢,我昨天重新写了IconNodeRenderer的setPreferredSize,但是好像没有起作用。
回去再试试,马上给分
pxboy 2003-10-16
  • 打赏
  • 举报
回复
注意
this.setPreferredSize(new java.awt.Dimension(100, 10));
这里
pxboy 2003-10-16
  • 打赏
  • 举报
回复
怎么我的代码到这里来了?我再贴一次吧

package common.tree;

import java.awt.Component;
import javax.swing.Icon;
import javax.swing.JTree;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.plaf.metal.MetalIconFactory;
import common.render.TreeNode;

/**
* 树图标
*/
public class IconNodeRenderer
extends DefaultTreeCellRenderer
{

/** 有叶子节点的图标 */
public static final Icon FOLDER_ICON = common.Transfer.getAppIcon("resource/folder.gif");

/** 叶子节点的图标*/
public static final Icon LEAF_ICON = common.Transfer.getAppIcon("resource/leaf.gif");

/** 节点打开时的图标*/
public static final Icon EXPANDED_ICON = common.Transfer.getAppIcon("resource/expanded.gif");

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);

TreeNode node = (TreeNode)value;

//判断节点是否已设置图标
Icon icon = node.getIcon();

if (icon == null)
{
if (expanded)
{
setIcon(EXPANDED_ICON);
this.setPreferredSize(new java.awt.Dimension(100, 10));
}
else if (!leaf)
{
setIcon(FOLDER_ICON);
this.setPreferredSize(new java.awt.Dimension(100, 30));
}
else
{
this.setPreferredSize(new java.awt.Dimension(100, 50));
setIcon(LEAF_ICON);
}
}
else
{
setIcon(icon);
}

return this;
}

}
zombieLi 2003-10-16
  • 打赏
  • 举报
回复
这样不行 icon如果太大了 不能显示全的
mtou 2003-10-16
  • 打赏
  • 举报
回复
package common.tree;

import java.awt.Component;
import javax.swing.Icon;
import javax.swing.JTree;
import javax.swing.tree.DefaultTreeCellRenderer;
import javax.swing.plaf.metal.MetalIconFactory;

/**
* 树图标
*/
public class IconNodeRenderer extends DefaultTreeCellRenderer {

/** 有叶子节点的图标 */
public static final Icon FOLDER_ICON=common.Transfer.getAppIcon("resource/folder.gif");

/** 叶子节点的图标*/
public static final Icon LEAF_ICON=common.Transfer.getAppIcon("resource/leaf.gif");

/** 节点打开时的图标*/
public static final Icon EXPANDED_ICON=common.Transfer.getAppIcon("resource/expanded.gif");

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);

TreeNode node=(TreeNode)value;

//判断节点是否已设置图标
Icon icon = node.getIcon();

if (icon == null) {
if(expanded)
setIcon(EXPANDED_ICON);
else if(!leaf)
setIcon(FOLDER_ICON);
else
setIcon(LEAF_ICON);
} else {
setIcon(icon);
}

return this;
}

}
zombieLi 2003-10-16
  • 打赏
  • 举报
回复
要保证前面的"+"好和连线也能正常显示呀

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧