⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 treeicondemo2.java

📁 这是一个英文版的《Java程序设计与问题解决》现在好多大学都当成教材
💻 JAVA
字号:
import javax.swing.JTree;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.event.TreeSelectionListener;import javax.swing.event.TreeSelectionEvent;import javax.swing.tree.TreeSelectionModel;import javax.swing.tree.DefaultTreeCellRenderer;import javax.swing.ImageIcon;import javax.swing.ToolTipManager;import java.net.URL;import java.io.IOException;import javax.swing.JEditorPane;import javax.swing.JScrollPane;import javax.swing.JSplitPane;import javax.swing.JFrame;import java.awt.*;import java.awt.event.*;public class TreeIconDemo2 extends JFrame {    private JEditorPane htmlPane;    private static boolean DEBUG = false;    private URL helpURL;    public TreeIconDemo2() {        super("TreeIconDemo2");        //Create the nodes.        DefaultMutableTreeNode top = new DefaultMutableTreeNode(                                                 "The Java Series");        createNodes(top);        //Create a tree that allows one selection at a time.        final JTree tree = new JTree(top);        tree.getSelectionModel().setSelectionMode                (TreeSelectionModel.SINGLE_TREE_SELECTION);        //Enable tool tips.        ToolTipManager.sharedInstance().registerComponent(tree);        /*         * Set the icon for leaf nodes.         * Note: In the Swing 1.0.x release, we used         * swing.plaf.basic.BasicTreeCellRenderer.         */        tree.setCellRenderer(new MyRenderer());        //Listen for when the selection changes.        tree.addTreeSelectionListener(new TreeSelectionListener() {            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());                }            }        });        //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 frame.        getContentPane().add(splitPane, BorderLayout.CENTER);    }    private class BookInfo {        public String bookName;        public URL bookURL;        public String prefix = "file:"                                + System.getProperty("user.dir")                               + System.getProperty("file.separator");        public BookInfo(String book, String filename) {            bookName = book;            try {                bookURL = new URL(prefix + filename);            } catch (java.net.MalformedURLException exc) {                System.err.println("Attempted to create a BookInfo "                                   + "with a bad URL: " + bookURL);                bookURL = null;            }        }        public String toString() {            return bookName;        }    }    private void initHelp() {        String s = null;        try {            s = "file:"                 + System.getProperty("user.dir")                + System.getProperty("file.separator")                + "TreeDemoHelp.html";            if (DEBUG) {                System.out.println("Help URL is " + s);            }            helpURL = new URL(s);            displayURL(helpURL);        } catch (Exception e) {            System.err.println("Couldn't create help URL: " + s);        }    }    private void displayURL(URL url) {        try {            htmlPane.setPage(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: Object-Oriented Programming for the Internet",            "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);        //Arnold/Gosling        book = new DefaultMutableTreeNode(new BookInfo            ("The Java Programming Language", "arnold.html"));        category.add(book);        //FAQ        book = new DefaultMutableTreeNode(new BookInfo(            "The Java FAQ", "faq.html"));        category.add(book);        //Chan/Lee        book = new DefaultMutableTreeNode(new BookInfo            ("The Java Class Libraries: An Annotated Reference",             "chanlee.html"));        category.add(book);        //Threads        book = new DefaultMutableTreeNode(new BookInfo            ("Concurrent Programming in Java: Design Principles and Patterns",             "thread.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);    }    public static void main(String[] args) {        JFrame frame = new TreeIconDemo2();        frame.addWindowListener(new WindowAdapter() {            public void windowClosing(WindowEvent e) {                System.exit(0);            }        });        frame.pack();        frame.setVisible(true);    }    private class MyRenderer extends DefaultTreeCellRenderer {        ImageIcon tutorialIcon;        public MyRenderer() {            tutorialIcon = new ImageIcon("images/middle.gif");        }        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);            }            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;        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -