[英]Change The icon of a certain Node in JTree?
我有一个JTree,它的节点是从DefaultMutableTreeNode驱动的。 每个节点都可以验证与否。首先,所有节点的图标都相同,但是当我选择它们并按下验证按钮时,我将更改已验证节点的ICON 。 我希望能够在每个节点上单击并写入,因此我无法使用JLabel来显示图标 。 我做了以下代码,但它返回NULLException。
class CustomIconRenderer extends DefaultTreeCellRenderer {
ImageIcon defaultIcon;
ImageIcon specialIcon;
ImageIcon closeIcon;
static DefaultTreeModel model;
static myDefaultMutableTreeNode root;
public CustomIconRenderer()
{
openIcon = new ImageIcon(CustomIconRenderer.class.getResource("icons/question.png"));
closeIcon = new ImageIcon(CustomIconRenderer.class.getResource("icons/Target-New-Logo.jpg"));
setLeafIcon(closeIcon);
}
@Override
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);
Object nodeObj = ((DefaultMutableTreeNode)value).getUserObject();
Check_each_nodes_are_verified_change_the_icon();
return this;
}
}
public class myDefaultMutableTreeNode extends DefaultMutableTreeNode{
private static int id=0;
private int nodeid;
private int verify;
private int depth;
}
百万谢谢。
DefaultTreeCellRenderer具有setter,允许设置打开图标,关闭图标和叶子图标。 在重写的getTreeCellRendererComponent中,在派生的渲染器类中设置这些图标,然后返回super.getTreeCellRendererComponent返回的图标。 在渲染之前为每个节点设置时,可以轻松地为特定节点设置一些不同的图标。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.