更改JTree中某个节点的图标? [英] Change The icon of a certain Node in JTree?

查看:712
本文介绍了更改JTree中某个节点的图标?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个JTree,它的节点是从DefaultMutableTreeNode驱动的。每个节点都可以验证与否。首先,所有节点的图标都相同,但是当我选择它们并按下验证按钮时,我将更改已验证节点的 ICON 。 >我希望能够在每个节点上单击和写入,因此我无法使用JLabel显示图标。
我做了以下代码,但它返回NULLException。

I have a JTree and nodes of it are driven from DefaultMutableTreeNode. Each node can be verify or not.At first the icon of all nodes are the same but, I am going to change the ICON of the verified nodes when I select them and press the verify button.I want to have the ability to click and write on each node so I can not use JLabel to show icons. I made the following code but it returns 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返回的图标。在渲染之前为每个节点设置时,您可以轻松地为特定节点设置一些不同的图标。

The DefaultTreeCellRenderer has setters, allowing to set open icon, closed icon and leaf icon. Inside the overridden getTreeCellRendererComponent, set these icons in your derived renderer class how you want and then return that is returned by super.getTreeCellRendererComponent. As you set for every node before you render, you can easily have some different icon for the particular node.

这篇关于更改JTree中某个节点的图标?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆