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

📄 winexplorer.java

📁 主要为一个空间信息管理系统
💻 JAVA
字号:
package edu.whu.gui;/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: </p> * @author not attributable * @version 1.0 */import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.text.DateFormat;import javax.swing.event.*;import javax.swing.table.*;import javax.swing.tree.*;import javax.swing.filechooser.*;import java.io.*;import java.util.*;public class WinExplorer    extends JFrame    implements TreeSelectionListener{    JPanel contentPane = (JPanel) getContentPane();    JMenuBar menuBar = new JMenuBar();    JMenu menuFile = new JMenu("文件");    JMenuItem menuItemExit = new JMenuItem("退出");    JToolBar toolBar = new JToolBar();    JButton bttUp = new JButton();    Icon iconUp = UIManager.getIcon("FileChooser.upFolderIcon");    JLabel statusBar = new JLabel();    DetailTable detailTable = new DetailTable();    JScrollPane sp = new JScrollPane(detailTable);    JSplitPane split = new JSplitPane();    FileSystemView fileSystemView = FileSystemView.getFileSystemView();    FileNode root = new FileNode(fileSystemView.getRoots()[0]);    DefaultTreeModel treeModel = new DefaultTreeModel(root);    JTree tree = new JTree(treeModel);    public static void main(String argv[])    {        try        {            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());            Font font = new Font("宋体", Font.PLAIN, 12);            String names[] =                             {"Label", "CheckBox", "PopupMenu", "TextPane",                             "MenuItem", "CheckBoxMenuItem",                             "JRadioButtonMenuItem",                             "ComboBox", "Button", "Tree", "ScrollPane",                             "TabbedPane",                             "EditorPane", "TitledBorder", "Menu", "TextArea",                             "OptionPane",                             "MenuBar", "ToolBar", "ToggleButton", "ToolTip",                             "ProgressBar",                             "TableHeader", "Panel", "List", "ColorChooser",                             "PasswordField",                             "TextField", "Table", "Label", "Viewport",                             "RadioButtonMenuItem",                             "RadioButton"};            for (int i = 0; i < names.length; i++)            {                UIManager.put(names[i] + ".font", font);            }            UIManager.put("Label.foreground", Color.black);            UIManager.put("Border.foreground", Color.black);            UIManager.put("TitledBorder.titleColor", Color.black);            new WinExplorer().show();        }        catch (Exception e)        {            e.printStackTrace();        }    }    public WinExplorer()    {        contentPane.setLayout(new BorderLayout());        Dimension dimension = getToolkit().getScreenSize();        int i = (dimension.width - 640) / 2;        int j = (dimension.height - 480) / 2;        setBounds(i, j, 640, 480);        setTitle("资源管理器");        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        setJMenuBar(menuBar);        statusBar.setText(" ");        menuItemExit.addActionListener(new ActionListener()        {            public void actionPerformed(ActionEvent e)            {                System.exit(0);            }        });        bttUp.setIcon(iconUp);        bttUp.addActionListener(new java.awt.event.ActionListener()        {            public void actionPerformed(ActionEvent e)            {                try                {                    TreePath upPath = tree.getSelectionPath().getParentPath();                    if (upPath != null)                    {                        tree.setSelectionPath(upPath);                        tree.scrollPathToVisible(upPath);                    }                }                catch (Exception ex)                {}            }        });        split.setDividerSize(6);        split.setLeftComponent(new JScrollPane(tree));        split.setRightComponent(sp);        split.setDividerLocation(180);        sp.getViewport().setBackground(Color.white);        menuFile.add(menuItemExit);        menuBar.add(menuFile);        contentPane.add(toolBar, BorderLayout.NORTH);        toolBar.add(bttUp, null);        contentPane.add(statusBar, BorderLayout.SOUTH);        contentPane.add(split, BorderLayout.CENTER);        tree.addTreeExpansionListener(new MyExpandsionListener());        tree.setCellRenderer(new MyTreeCellRenderer());        tree.addTreeSelectionListener(this);        tree.setSelectionRow(0);        tree.setComponentOrientation(ComponentOrientation.UNKNOWN);    }    public void valueChanged(TreeSelectionEvent e)    {        Object obj = tree.getLastSelectedPathComponent();        if (obj == null)            return;        else            detailTable.setParent( ( (FileNode) obj).getFile());    }    class MyTreeCellRenderer        extends DefaultTreeCellRenderer    {        public MyTreeCellRenderer()        {}        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);            setIcon(fileSystemView.getSystemIcon( ( (FileNode) value).getFile()));            return this;        }    }    class MyExpandsionListener        implements TreeExpansionListener    {        public MyExpandsionListener()        {}        public void treeCollapsed(TreeExpansionEvent event)        {}        public void treeExpanded(TreeExpansionEvent event)        {            if (event.getPath() == null)            {                return;            }            tree.setCursor(new Cursor(Cursor.WAIT_CURSOR));            TreePath path = event.getPath();            FileNode node = (FileNode) path.getLastPathComponent();            node.explore();            treeModel.nodeStructureChanged(node);            tree.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));        }    }    class FileNode        extends DefaultMutableTreeNode    {        private boolean explored = false;        public FileNode(File file)        {            setUserObject(file);        }        public boolean getAllowsChildren()        {            return isDirectory();        }        public boolean isLeaf()        {            return!isDirectory();        }        public File getFile()        {            return (File) getUserObject();        }        public boolean isExplored()        {            return explored;        }        public void setExplored(boolean b)        {            explored = b;        }        public boolean isDirectory()        {            return getFile().isDirectory();        }        public String toString()        {            File file = (File) getUserObject();            String filename = file.toString();            int index = filename.lastIndexOf(File.separator);            return (index != -1 && index != filename.length() - 1)                ? filename.substring(index + 1) : filename;        }        public void explore()        {            if (!isExplored())            {                File file = getFile();                File[] children = file.listFiles();                if (children == null || children.length == 0)                    return;                for (int i = 0; i < children.length; ++i)                {                    File f = children[i];                    if (f.isDirectory())                        add(new FileNode(children[i]));                }                explored = true;            }        }    }    class DetailTable        extends JTable    {        DetailTableModel model = new DetailTableModel();        public DetailTable()        {            setModel(model);            setShowGrid(false);            TableColumnModel colModel = getColumnModel();            for (int i = 0; i < 3; i++)                colModel.getColumn(i).setCellRenderer(new                    DetailsTableCellRenderer());            setRowHeight(18);            this.addMouseListener(new MouseAdapter()            {                public void mouseClicked(MouseEvent e)                {                    if (e.getClickCount() == 2)                    {                        for (int i = 0; i < getRowCount(); i++)                        {                            if (getCellRect(i, 0, true).contains(e.getPoint()))                            {                                openSelect();                                break;                            }                        }                    }                }            });        }        public void openSelect()        {            Object obj = model.getValueAt(getSelectedRow(), 0);            if (obj == null)                return;            File f = (File) obj;            if (f.isDirectory())            {                //expand tree            }            else            {                //open select file            }        }        public void setParent(File parent)        {            model.removeAllRows();            File list[] = parent.listFiles();            if (list == null)                return;            Vector vDir = new Vector(), vFile = new Vector();            for (int i = 0; i < list.length; i++)            {                if (list[i].isDirectory())                    vDir.add(list[i]);                else                    vFile.add(list[i]);            }            sortElements(vFile);            sortElements(vDir);            for (int i = 0; i < vDir.size(); i++)                model.addFile( (File) vDir.elementAt(i));            for (int i = 0; i < vFile.size(); i++)                model.addFile( (File) vFile.elementAt(i));        }        public void sortElements(Vector v)        {            for (int i = 0; i < v.size(); i++)            {                int k = i;                for (int j = i + 1; j < v.size(); j++)                {                    File fa = (File) v.elementAt(j);                    File fb = (File) v.elementAt(k);                    if (fileSystemView.getSystemDisplayName(fa).toLowerCase().                        compareTo(                        fileSystemView.getSystemDisplayName(fb).toLowerCase()) <                        0)                        k = j;                }                if (k != i)                    swap(k, i, v);            }        }        private void swap(int loc1, int loc2, Vector v)        {            Object tmp = v.elementAt(loc1);            v.setElementAt(v.elementAt(loc2), loc1);            v.setElementAt(tmp, loc2);        }        class DetailTableModel            extends DefaultTableModel        {            public DetailTableModel()            {                addColumn("名称");                addColumn("大小");                addColumn("修改时间");            }            public void addFile(File f)            {                addRow(new Object[]                       {f, new Double(f.length() / 1024),                       new java.sql.Date(f.lastModified())});            }            public void removeAllRows()            {                while (getRowCount() != 0)                    removeRow(0);            }            public boolean isCellEditable(int row, int column)            {                return false;            }        }        class DetailsTableCellRenderer            extends DefaultTableCellRenderer        {            DetailsTableCellRenderer()            {}            public Component getTableCellRendererComponent(JTable table,                Object value,                boolean isSelected, boolean hasFocus, int row, int column)            {                if (column == 1)                {                    setHorizontalAlignment(SwingConstants.TRAILING);                    isSelected = hasFocus = false;                }                else if (column == 2)                {                    setHorizontalAlignment(SwingConstants.CENTER);                    isSelected = hasFocus = false;                }                else                    setHorizontalAlignment(SwingConstants.LEADING);                return super.getTableCellRendererComponent(                    table, value, isSelected, hasFocus, row, column);            }            public void setValue(Object value)            {                setIcon(null);                if (value instanceof File)                {                    File file = (File) value;                    setText(fileSystemView.getSystemDisplayName(file));                    setIcon(fileSystemView.getSystemIcon(file));                }                else                {                    super.setValue(value);                }            }        }    }}

⌨️ 快捷键说明

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