我想在树中显示不同的图标,就是让不同的目录使用我指定的图片做图标,但不清楚怎么做,清赐教,谢谢!

解决方案 »

  1.   

    这个比较简单,用DefaultTreeCellRenderer应该就可以实现
      

  2.   

    楼主可以参考一下JDK的例子:
    /**
     * A 1.4 application that requires the following additional files:
     *   TreeDemoHelp.html
     *    arnold.html
     *    bloch.html
     *    chan.html
     *    jls.html
     *    swingtutorial.html
     *    tutorial.html
     *    tutorialcont.html
     *    vm.html
     */import javax.swing.JEditorPane;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JSplitPane;import javax.swing.JTree;
    import javax.swing.tree.DefaultMutableTreeNode;
    import javax.swing.tree.TreeSelectionModel;
    import javax.swing.event.TreeSelectionEvent;
    import javax.swing.event.TreeSelectionListener;
    import javax.swing.tree.DefaultTreeCellRenderer;
    import javax.swing.ToolTipManager;
    import javax.swing.ImageIcon;
    import javax.swing.Icon;import java.net.URL;
    import java.io.IOException;
    import java.awt.Dimension;
    import java.awt.GridLayout;
    import java.awt.Component;
    public class TreeIconDemo2 extends JPanel 
                               implements TreeSelectionListener {
        private JEditorPane htmlPane;
        private JTree tree;
        private URL helpURL;
        private static boolean DEBUG = false;    public TreeIconDemo2() {
            super(new GridLayout(1,0));        //Create the nodes.
            DefaultMutableTreeNode top =
                new DefaultMutableTreeNode("The Java Series");
            createNodes(top);        //Create a tree that allows one selection at a time.
            tree = new JTree(top);
            tree.getSelectionModel().setSelectionMode
                    (TreeSelectionModel.SINGLE_TREE_SELECTION);        //Enable tool tips.
            ToolTipManager.sharedInstance().registerComponent(tree);        //Set the icon for leaf nodes.
            ImageIcon tutorialIcon = createImageIcon("images/middle.gif");
            if (tutorialIcon != null) {
                tree.setCellRenderer(new MyRenderer(tutorialIcon));
            } else {
                System.err.println("Tutorial icon missing; using default.");
            }        //Listen for when the selection changes.
            tree.addTreeSelectionListener(this);        //Create the scroll pane and add the tree to it. 
            JScrollPane treeView = new JScrollPane(tree);        //Create the HTML viewing pane.
            htmlPane = new JEditorPane();
            htmlPane.setEditable(false);
            initHelp();
            JScrollPane htmlView = new JScrollPane(htmlPane);        //Add the scroll panes to a split pane.
            JSplitPane splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
            splitPane.setTopComponent(treeView);
            splitPane.setBottomComponent(htmlView);        Dimension minimumSize = new Dimension(100, 50);
            htmlView.setMinimumSize(minimumSize);
            treeView.setMinimumSize(minimumSize);
            splitPane.setDividerLocation(100); //XXX: ignored in some releases
                                               //of Swing. bug 4101306
            //workaround for bug 4101306:
            //treeView.setPreferredSize(new Dimension(100, 100));         splitPane.setPreferredSize(new Dimension(500, 300));        //Add the split pane to this panel.
            add(splitPane);
        }    /** Required by TreeSelectionListener interface. */
        public void valueChanged(TreeSelectionEvent e) {
            DefaultMutableTreeNode node = (DefaultMutableTreeNode)
                               tree.getLastSelectedPathComponent();        if (node == null) return;        Object nodeInfo = node.getUserObject();
            if (node.isLeaf()) {
                BookInfo book = (BookInfo)nodeInfo;
                displayURL(book.bookURL);
                if (DEBUG) {
                    System.out.print(book.bookURL + ":  \n    ");
                }
            } else {
                displayURL(helpURL); 
            }
            if (DEBUG) {
                System.out.println(nodeInfo.toString());
            }
        }    private class BookInfo {
            public String bookName;
            public URL bookURL;        public BookInfo(String book, String filename) {
                bookName = book;
                bookURL = TreeIconDemo.class.getResource(filename);
                if (bookURL == null) {
                    System.err.println("Couldn't find file: "
                                       + filename);
                }
            }        public String toString() {
                return bookName;
            }
        }    private void initHelp() {
            String s = "TreeDemoHelp.html";
            helpURL = TreeIconDemo.class.getResource(s);
            if (helpURL == null) {
                System.err.println("Couldn't open help file: " + s);
            } else if (DEBUG) {
                System.out.println("Help URL is " + helpURL);
            }        displayURL(helpURL);
        }
      

  3.   

    private void displayURL(URL url) {
            try {
                if (url != null) {
                    htmlPane.setPage(url);
                } else { //null url
    htmlPane.setText("File Not Found");
                    if (DEBUG) {
                        System.out.println("Attempted to display a null URL.");
                    }
                }
            } catch (IOException e) {
                System.err.println("Attempted to read a bad URL: " + url);
            }
        }    private void createNodes(DefaultMutableTreeNode top) {
            DefaultMutableTreeNode category = null;
            DefaultMutableTreeNode book = null;        category = new DefaultMutableTreeNode("Books for Java Programmers");
            top.add(category);        //original Tutorial
            book = new DefaultMutableTreeNode(new BookInfo
                ("The Java Tutorial: A Short Course on the Basics",
                "tutorial.html"));
            category.add(book);        //Tutorial Continued
            book = new DefaultMutableTreeNode(new BookInfo
                ("The Java Tutorial Continued: The Rest of the JDK",
                "tutorialcont.html"));
            category.add(book);        //JFC Swing Tutorial
            book = new DefaultMutableTreeNode(new BookInfo
                ("The JFC Swing Tutorial: A Guide to Constructing GUIs",
                "swingtutorial.html"));
            category.add(book);        //Bloch
            book = new DefaultMutableTreeNode(new BookInfo
                ("Effective Java Programming Language Guide",
         "bloch.html"));
            category.add(book);        //Arnold/Gosling
            book = new DefaultMutableTreeNode(new BookInfo
                ("The Java Programming Language", "arnold.html"));
            category.add(book);        //Chan
            book = new DefaultMutableTreeNode(new BookInfo
                ("The Java Developers Almanac",
                 "chan.html"));
            category.add(book);        category = new DefaultMutableTreeNode("Books for Java Implementers");
            top.add(category);        //VM
            book = new DefaultMutableTreeNode(new BookInfo
                ("The Java Virtual Machine Specification",
                 "vm.html"));
            category.add(book);        //Language Spec
            book = new DefaultMutableTreeNode(new BookInfo
                ("The Java Language Specification",
                 "jls.html"));
            category.add(book);
        }    /** Returns an ImageIcon, or null if the path was invalid. */
        protected static ImageIcon createImageIcon(String path) {
            java.net.URL imgURL = TreeIconDemo2.class.getResource(path);
            if (imgURL != null) {
                return new ImageIcon(imgURL);
            } else {
                System.err.println("Couldn't find file: " + path);
                return null;
            }
        }    /**
         * Create the GUI and show it.  For thread safety,
         * this method should be invoked from the
         * event-dispatching thread.
         */
        private static void createAndShowGUI() {
            //Make sure we have nice window decorations.
            JFrame.setDefaultLookAndFeelDecorated(true);        //Create and set up the window.
            JFrame frame = new JFrame("TreeIconDemo2");
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        //Create and set up the content pane.
            TreeIconDemo2 newContentPane = new TreeIconDemo2();
            newContentPane.setOpaque(true); //content panes must be opaque
            frame.setContentPane(newContentPane);        //Display the window.
            frame.pack();
            frame.setVisible(true);
        }    public static void main(String[] args) {
            //Schedule a job for the event-dispatching thread:
            //creating and showing this application's GUI.
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowGUI();
                }
            });
        }    private class MyRenderer extends DefaultTreeCellRenderer {
            Icon tutorialIcon;        public MyRenderer(Icon icon) {
                tutorialIcon = icon;
            }        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);
                if (leaf && isTutorialBook(value)) {
                    setIcon(tutorialIcon);
                    setToolTipText("This book is in the Tutorial series.");
                } else {
                    setToolTipText(null); //no tool tip
                }            return this;
            }        protected boolean isTutorialBook(Object value) {
                DefaultMutableTreeNode node =
                        (DefaultMutableTreeNode)value;
                BookInfo nodeInfo = 
                        (BookInfo)(node.getUserObject());
                String title = nodeInfo.bookName;
                if (title.indexOf("Tutorial") >= 0) {
                    return true;
                }             return false;
            }
        }
    }
      

  4.   

    JTree tree;
     DefaultMutableTreeNode tp1;
     DefaultTreeModel treeModel;
     DefaultTreeCellRenderer r = new DefaultTreeCellRenderer();tp1 = new DefaultMutableTreeNode(myname);
    treeModel=new DefaultTreeModel(tp1);r.setLeafIcon(new ImageIcon("image/qq.gif"));
    r.setOpenIcon(new ImageIcon("image/qq.gif"));
    r.setClosedIcon(new ImageIcon("image/qq.gif"));
    tree.setCellRenderer(r);tree=new JTree(treeModel);这个简单的够不?
    不够可以给多点分吧?