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

📄 treedemo.java

📁 Java C/S 结构中的树结构源代码Demo.
💻 JAVA
字号:
/* * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * *   - Redistributions of source code must retain the above copyright *     notice, this list of conditions and the following disclaimer. * *   - Redistributions in binary form must reproduce the above copyright *     notice, this list of conditions and the following disclaimer in the *     documentation and/or other materials provided with the distribution. * *   - Neither the name of Sun Microsystems nor the names of its *     contributors may be used to endorse or promote products derived *     from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package components;/** * This 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.UIManager;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 java.net.URL;import java.io.IOException;import java.awt.Dimension;import java.awt.GridLayout;public class TreeDemo extends JPanel                      implements TreeSelectionListener {    private JEditorPane htmlPane;    private JTree tree;    private URL helpURL;    private static boolean DEBUG = false;    //Optionally play with line styles.  Possible values are    //"Angled" (the default), "Horizontal", and "None".    private static boolean playWithLineStyle = false;    private static String lineStyle = "Horizontal";        //Optionally set the look and feel.    private static boolean useSystemLookAndFeel = false;    public TreeDemo() {        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);        //Listen for when the selection changes.        tree.addTreeSelectionListener(this);        if (playWithLineStyle) {            System.out.println("line style = " + lineStyle);            tree.putClientProperty("JTree.lineStyle", lineStyle);        }        //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);         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 = getClass().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 = getClass().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);    }    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);    }            /**     * Create the GUI and show it.  For thread safety,     * this method should be invoked from the     * event dispatch thread.     */    private static void createAndShowGUI() {        if (useSystemLookAndFeel) {            try {                UIManager.setLookAndFeel(                    UIManager.getSystemLookAndFeelClassName());            } catch (Exception e) {                System.err.println("Couldn't use system look and feel.");            }        }        //Create and set up the window.        JFrame frame = new JFrame("TreeDemo");        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        //Add content to the window.        frame.add(new TreeDemo());        //Display the window.        frame.pack();        frame.setVisible(true);    }    public static void main(String[] args) {        //Schedule a job for the event dispatch thread:        //creating and showing this application's GUI.        javax.swing.SwingUtilities.invokeLater(new Runnable() {            public void run() {                createAndShowGUI();            }        });    }}

⌨️ 快捷键说明

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