1

JTreeがあり、そのノードはDefaultMutableTreeNodeから駆動されます。各ノードは確認できるかどうかはわかりません。最初はすべてのノードのアイコンは同じですが 、確認したノードを選択して確認ボタンを押すと、確認したノードのアイコンを変更します。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;

    }

何百万ありがとう。

4

1 に答える 1

3

DefaultTreeCellRendererにはセッターがあり、開いたアイコン、閉じたアイコン、葉のアイコンを設定できます。オーバーライドされたgetTreeCellRendererComponent内で、派生レンダラークラスにこれらのアイコンを希望どおりに設定してから、super.getTreeCellRendererComponentによって返されるアイコンを返します。レンダリングする前にすべてのノードに設定すると、特定のノードにいくつかの異なるアイコンを簡単に設定できます。

于 2013-01-07T08:54:43.170 に答える