【问题标题】:Change The icon of a certain Node in JTree?更改JTree中某个节点的图标?
【发布时间】:2013-01-07 08:42:32
【问题描述】:

我有一个 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;

    }

百万感谢。

【问题讨论】:

  • 你在哪里得到 NullPointerException?你能发布堆栈跟踪吗?
  • “我希望能够在每个节点上点击和书写,所以我不能使用 JLabel 来显示图标” - 当然可以,渲染器和编辑器是两个独立的实体。事实上DefaultTreeCellRenderer 扩展自JLabel
  • 如需尽快获得更好的帮助,请发帖SSCCE
  • 请学习java命名约定并遵守它们。

标签: java swing icons jtree treecellrenderer


【解决方案1】:

DefaultTreeCellRenderer 有设置器,允许设置打开图标、关闭图标和叶子图标。在被覆盖的 getTreeCellRendererComponent 中,在派生的渲染器类中根据需要设置这些图标,然后返回由 super.getTreeCellRendererComponent 返回的图标。正如您在渲染之前为每个节点设置的那样,您可以轻松地为特定节点设置一些不同的图标。

【讨论】:

    猜你喜欢
    • 2011-09-03
    • 2013-02-04
    • 2014-07-31
    • 2011-01-13
    • 2011-06-06
    • 2011-07-04
    • 2013-06-30
    • 2012-02-01
    • 2014-01-08
    相关资源
    最近更新 更多