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

📄 sourcebrowserwindow.java

📁 java实现浏览器等本地桌面的功能
💻 JAVA
字号:
/* * SourceBrowserWindow.java * * Created on April 5, 2005, 9:00 AM */package org.jdesktop.demo;import java.io.File;import java.io.FileInputStream;import java.io.InputStream;import java.util.Vector;import javax.swing.JFrame;import javax.swing.text.rtf.RTFEditorKit;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.tree.DefaultTreeModel;import javax.swing.tree.TreeModel;import javax.swing.tree.TreeNode;import javax.swing.tree.TreePath;import org.jdesktop.swingx.JXTitledPanel;import org.jdesktop.swingx.util.WindowUtils;/** * * @author  rbair */public class SourceBrowserWindow extends javax.swing.JFrame {    private File rootDir;        /** Creates new form SourceBrowserWindow */    public SourceBrowserWindow(File sourceRootDir) {//        rootDir = new File("/usr/local/src/swinglabs-demos/swinglabs-demos/src/java");        rootDir = sourceRootDir;        initComponents();        setSize(800, 600);        setLocation(WindowUtils.getPointForCentering(this));    }        public void setSelectedSourceFile(File sourceFile) {       // Build vector of path elements             File pathElement = sourceFile;       Vector pathElements = new Vector();       pathElements.add(pathElement);       while (!pathElement.equals(rootDir))  {           pathElement = pathElement.getParentFile();           pathElements.insertElementAt(pathElement, 0);       }       // Now use path elements to do top-down search for corresponding tree node       DefaultTreeModel treeModel = (DefaultTreeModel)sourceTree.getModel();        DefaultMutableTreeNode pathNode = (DefaultMutableTreeNode)treeModel.getRoot();        for(int i = 0; i < pathElements.size(); i++) {           pathElement = (File)pathElements.get(i);           for(int j = 0; j < pathNode.getChildCount(); j++) {               DefaultMutableTreeNode node = (DefaultMutableTreeNode)pathNode.getChildAt(j);               if (node.getUserObject().equals(pathElement)) {                   pathNode = node;                   break;               }           }       }              sourceTree.setSelectionPath(new TreePath(pathNode.getPath()));    }        /** This method is called from within the constructor to     * initialize the form.     * WARNING: Do NOT modify this code. The content of this method is     * always regenerated by the Form Editor.     */    // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents    private void initComponents() {        java.awt.GridBagConstraints gridBagConstraints;        jScrollPane1 = new javax.swing.JScrollPane();        sourceTree = new javax.swing.JTree();        jScrollPane2 = new javax.swing.JScrollPane();        oldEditorPane = new org.jdesktop.swingx.JXEditorPane();        jSplitPane1 = new javax.swing.JSplitPane();        jMenuBar1 = new javax.swing.JMenuBar();        jMenu1 = new javax.swing.JMenu();        jMenuItem1 = new javax.swing.JMenuItem();        jSeparator1 = new javax.swing.JSeparator();        closeWindowMI = new javax.swing.JMenuItem();        jScrollPane1.setBorder(null);        sourceTree.setModel(createTreeModel());        sourceTree.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {            public void valueChanged(javax.swing.event.TreeSelectionEvent evt) {                sourceTreeValueChanged(evt);            }        });        jScrollPane1.setViewportView(sourceTree);        jScrollPane2.setBorder(null);        oldEditorPane.setEditable(false);        jScrollPane2.setViewportView(oldEditorPane);        getContentPane().setLayout(new java.awt.GridBagLayout());        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);        jSplitPane1.setBorder(null);        jSplitPane1.setDividerLocation(150);        JXTitledPanel tp = new JXTitledPanel("Sources");        tp.setContentContainer(jScrollPane1);        jSplitPane1.setLeftComponent(tp);        tp = new JXTitledPanel("Editor");        tp.setContentContainer(jScrollPane2);        jSplitPane1.setRightComponent(tp);        gridBagConstraints = new java.awt.GridBagConstraints();        gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;        gridBagConstraints.weightx = 1.0;        gridBagConstraints.weighty = 1.0;        gridBagConstraints.insets = new java.awt.Insets(12, 12, 11, 11);        getContentPane().add(jSplitPane1, gridBagConstraints);        jMenu1.setText("Menu");        jMenuItem1.setText("Print");        jMenu1.add(jMenuItem1);        jMenu1.add(jSeparator1);        closeWindowMI.setText("Close Window");        closeWindowMI.addActionListener(new java.awt.event.ActionListener() {            public void actionPerformed(java.awt.event.ActionEvent evt) {                closeWindowMIActionPerformed(evt);            }        });        jMenu1.add(closeWindowMI);        jMenuBar1.add(jMenu1);        setJMenuBar(jMenuBar1);        pack();    }    // </editor-fold>//GEN-END:initComponents    private void sourceTreeValueChanged(javax.swing.event.TreeSelectionEvent evt) {//GEN-FIRST:event_sourceTreeValueChanged        //get the selected node and if it is a file, open it in the source editor        TreePath path = sourceTree.getSelectionPath();        TreeNode node = (TreeNode)path.getLastPathComponent();        if (node instanceof FileTreeNode) {            File f = (File)((FileTreeNode)node).getUserObject();            if (f.isFile()) {                //read the contents of the file into a String                try {//                    StringBuilder buffer = new StringBuilder();//                    byte[] bytes = new byte[1024];//                    int length = -1;//                    InputStream is = new FileInputStream(f);//                    while ((length = is.read(bytes)) != -1) {//                        buffer.append(new String(bytes, 0, length));//                    }//                    oldEditorPane.setEditorKit(new RTFEditorKit());//                    oldEditorPane.setText(buffer.toString());                    oldEditorPane.setPage(f.toURL());                } catch (Exception e) {                    e.printStackTrace();                }            }        }    }//GEN-LAST:event_sourceTreeValueChanged    private void closeWindowMIActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_closeWindowMIActionPerformed        setVisible(false);    }//GEN-LAST:event_closeWindowMIActionPerformed        // Variables declaration - do not modify//GEN-BEGIN:variables    private javax.swing.JMenuItem closeWindowMI;    private javax.swing.JMenu jMenu1;    private javax.swing.JMenuBar jMenuBar1;    private javax.swing.JMenuItem jMenuItem1;    private javax.swing.JScrollPane jScrollPane1;    private javax.swing.JScrollPane jScrollPane2;    private javax.swing.JSeparator jSeparator1;    private javax.swing.JSplitPane jSplitPane1;    private javax.swing.JEditorPane oldEditorPane;    private javax.swing.JTree sourceTree;    // End of variables declaration//GEN-END:variables    private TreeModel createTreeModel() {        DefaultMutableTreeNode root = new DefaultMutableTreeNode("Sources");        createDirectory(root, rootDir);        return new DefaultTreeModel(root);    }        private void createDirectory(DefaultMutableTreeNode dirNode, File rootDir) {        if (rootDir != null && dirNode != null) {            for (File f : rootDir.listFiles()) {                if (f.isDirectory()) {                    DefaultMutableTreeNode dir = new FileTreeNode(f);                    dirNode.add(dir);                    createDirectory(dir, f);                } else if (f.isFile()) {                    DefaultMutableTreeNode file = new FileTreeNode(f);                    dirNode.add(file);                }            }        }    }        private static final class FileTreeNode extends DefaultMutableTreeNode {        public FileTreeNode(File f) {            super(f);        }                public String toString() {            File f = (File)getUserObject();            if (f.isDirectory()) {                return ((File)getUserObject()).getName() + "/";            } else {                return ((File)getUserObject()).getName();            }        }    }    }

⌨️ 快捷键说明

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