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

📄 mainframe.java

📁 java实现的类winrar的压缩工具
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package javazip;

import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.Event;
import java.awt.BorderLayout;
import java.awt.Dimension;

import javax.swing.BorderFactory;
import javax.swing.KeyStroke;
import javax.swing.JPanel;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JDialog;
import java.awt.GraphicsConfiguration;
import java.awt.HeadlessException;
import java.io.File;
import javax.swing.JFrame;
import javax.swing.JToolBar;
import javax.swing.JSplitPane;
import javax.swing.JScrollPane;
import javax.swing.JButton;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JOptionPane;

import javazip.dialog.AboutDialog;
import javazip.dialog.AddFileDialog;
import javazip.dialog.ExtractDialog;
import javazip.dialog.WizardDialog;
import javazip.editor.TextEditor;
import javazip.util.Util;
import java.awt.Toolkit;
import java.util.ArrayList;
import java.awt.FlowLayout;

/**
 * @author WangXueqiang,Software04.4,QLSC,SDU,China
 * 
 */
public class MainFrame extends JFrame {

	private JPanel jContentPane = null;

	private JMenuBar jJMenuBar = null;

	private JMenu jMenuFile = null;

	private JMenu jMenuHelp = null;

	private JMenuItem jMenuHelpAbout = new JMenuItem();

	private JMenuItem jMenuItemOpen = new JMenuItem();

	private JMenuItem[] jMenuItemDrives;

	private JMenuItem jMenuItemView = new JMenuItem();

	private JMenuItem jMenuItemSelectAll = new JMenuItem();

	private JMenuItem jMenuItemSelect = new JMenuItem();

	private JMenuItem jMenuItemUnselect = new JMenuItem();

	private JMenuItem jMenuItemSelectRest = new JMenuItem();

	private JMenuItem jMenuItemExit = new JMenuItem();

	private JMenu jMenuCommand = null;

	private JMenu jMenuTools = null;

	private JMenuItem jMenuItemWizard = new JMenuItem();

	private JMenuItem jMenuItemConvert = new JMenuItem();

	private JMenuItem jMenuItemSearch = new JMenuItem();

	private JMenuItem jMenuItemInfo = new JMenuItem();

	private JMenuItem jMenuItemAdd = new JMenuItem();

	private JMenuItem jMenuItemExtract = new JMenuItem();

	private JMenuItem jMenuItemTest = new JMenuItem();

	private JMenuItem jMenuItemDelete = new JMenuItem();

	private JMenuItem jMenuItemRename = new JMenuItem();

	private JMenuItem jMenuItemAddNote = new JMenuItem();

	private JMenuItem jMenuItemEncrypt = new JMenuItem();

	private JToolBar jToolBar = null;

	private JSplitPane jSplitPane = null;

	private JScrollPane jScrollPane1 = null;

	private JScrollPane jScrollPane2 = null;

	private JButton jBtnAdd = null;

	private JButton jBtnExtract = null;

	private JButton jBtnTest = null;

	private JButton jBtnView = null;

	private JButton jBtnDelete = null;

	private JButton jBtnSearch = null;

	private JButton jBtnWizard = null;

	private JButton jBtnInfo = null;

	private JButton jBtnExit = null;

	private JButton jBtnEncrypt = null;

	private JPanel statusBar = null;

	private JLabel jLabelStatus = null;

	private JLabel jLabelTotal = null;

	private JMenu jMenuDriveChooser = null;

	private DirTree dirTree = null;

	private FileList fileList = null;

	private String source;

	private Util u = new Util();

	private ExtractDialog extractDialog = new ExtractDialog(MainFrame.this,
			true, source);

	private ArrayList AllFiles = new ArrayList();

	public MainFrame() throws HeadlessException {
		super();
		// TODO 自动生成构造函数存根
		initialize();
	}

	public MainFrame(GraphicsConfiguration arg0) {
		super(arg0);
		// TODO 自动生成构造函数存根
		initialize();
	}

	public MainFrame(String arg0) throws HeadlessException {
		super(arg0);
		// TODO 自动生成构造函数存根
		initialize();
	}

	public MainFrame(String arg0, GraphicsConfiguration arg1) {
		super(arg0, arg1);
		// TODO 自动生成构造函数存根
		initialize();
	}

	/**
	 * This method initializes this
	 * 
	 * @return void
	 */
	private void initialize() {
		jMenuItemTest.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				File f[] = getFileList().getSelectedFiles();
				if (f == null || f.length == 0) {
					JOptionPane.showMessageDialog(null, "请选择文件!");
					return;
				}
				boolean result = u.testFile(f[0]);
				if (result) {
					JOptionPane.showMessageDialog(null, "测试文件成功!");
				} else {
					JOptionPane.showMessageDialog(null, "测试文件失败!");
				}
			}
		});
		jMenuItemExtract.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				File f[] = getFileList().getSelectedFiles();
				if (f == null || f.length == 0) {
					JOptionPane.showMessageDialog(null, "请选择文件!");
					return;
				}
				if (!f[0].toString().endsWith(".zip")
						&& !f[0].toString().endsWith(".gz")
						&& !f[0].toString().endsWith(".jar")) {
					JOptionPane.showMessageDialog(null,
							"只能选择一个文件,而且只支持.zip,.gz,.jar文件");
					return;
				}
				source = f[0].toString();
				extractDialog = new ExtractDialog(MainFrame.this, true, source);
				extractDialog.setVisible(true);
			}
		});
		jMenuItemAdd.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				File f[] = getFileList().getSelectedFiles();
				if (f == null || f.length == 0) {
					JOptionPane.showMessageDialog(null, "请选择文件!");
					return;
				}
				AddFileDialog addFileDialog = new AddFileDialog(MainFrame.this,
						getFileList().getSelectedFiles());
				addFileDialog.setVisible(true);
			}
		});
		jMenuItemSelectAll
				.addActionListener(new java.awt.event.ActionListener() {
					public void actionPerformed(java.awt.event.ActionEvent e) {
						selectAll();
					}
				});
		jMenuItemExit.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				exit();
			}
		});
		jMenuHelpAbout.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				AboutDialog about = new AboutDialog(MainFrame.this, true);
				about.setVisible(true);
			}
		});
		jMenuItemView.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				File[] files=fileList.getSelectedFiles();
				if (files == null || files.length == 0) {
					JOptionPane.showMessageDialog(null, "请选择文件!");
					return;
				}
				TextEditor te = new TextEditor(files[0]);
				te.addWindowListener(new WindowAdapter() {
					public void windowClosing(WindowEvent e)
					{
						File[] files=fileList.getSelectedFiles();
						if (files == null || files.length == 0) {
							JOptionPane.showMessageDialog(null, "请选择文件!");
							return;
						}
						if (files[0].isDirectory()){
							fileList.setPath(files[0].getAbsolutePath());
						}
						else{
							TextEditor te = new TextEditor(files[0]);
							te.show();
							te.openFile();
						}
					}
				});
				te.show();
				te.openFile();
			}
		});
		jMenuItemWizard.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				WizardDialog wizard = new WizardDialog(MainFrame.this,true);
				wizard.setVisible(true);
			}
		});
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		// this.setPreferredSize(new java.awt.Dimension(560,400));
		this.setSize(560, 400);
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		Dimension frameSize = this.getSize();
		this.setLocation((screenSize.width - frameSize.width) / 2,
				(screenSize.height - frameSize.height) / 2);
		this.setIconImage(Toolkit.getDefaultToolkit().getImage(
				getClass().getResource("/resources/ico.gif")));
		this.setJMenuBar(getJJMenuBar());
		this.setContentPane(getJContentPane());
		this.setTitle("JavaZipV1.0  by WXQ(20043001154)");
	}

	/**
	 * This method initializes jContentPane
	 * 
	 * @return javax.swing.JPanel
	 */
	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(new BorderLayout());
			jContentPane.add(getJToolBar(), java.awt.BorderLayout.NORTH);
			jContentPane.add(getJSplitPane(), java.awt.BorderLayout.CENTER);
			jContentPane.add(getStatusBar(), java.awt.BorderLayout.SOUTH);
		}
		return jContentPane;
	}

	/**
	 * This method initializes jJMenuBar
	 * 
	 * @return javax.swing.JMenuBar
	 */
	private JMenuBar getJJMenuBar() {
		if (jJMenuBar == null) {
			jJMenuBar = new JMenuBar();
			jMenuItemOpen.setText("打开压缩文件");
			jMenuItemOpen.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
					Event.CTRL_MASK, true));
			File[] drives = File.listRoots();
			jMenuItemDrives = new JMenuItem[drives.length];
			for (int i = 0; i < drives.length; i++) {
				jMenuItemDrives[i] = new JMenuItem();
				jMenuItemDrives[i].setText(drives[i].toString());
			}
			jMenuItemView.setText("浏览文件夹");
			jMenuItemView.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,
					Event.CTRL_MASK, true));
			jMenuItemSelectAll.setText("全部选定");
			jMenuItemSelectAll.setAccelerator(KeyStroke.getKeyStroke(
					KeyEvent.VK_A, Event.CTRL_MASK, true));
			jMenuItemSelect.setText("选定一组");
			jMenuItemSelect.setAccelerator(KeyStroke.getKeyStroke(
					KeyEvent.VK_S, Event.CTRL_MASK, true));
			jMenuItemUnselect.setText("撤选一组");
			jMenuItemUnselect.setAccelerator(KeyStroke.getKeyStroke(
					KeyEvent.VK_U, Event.CTRL_MASK, true));
			jMenuItemSelectRest.setText("反选");
			jMenuItemSelectRest.setAccelerator(KeyStroke.getKeyStroke(
					KeyEvent.VK_R, Event.CTRL_MASK, true));
			jMenuItemExit.setText("退出");
			jMenuItemWizard.setText("向导");
			jMenuItemWizard.setAccelerator(KeyStroke.getKeyStroke(
					KeyEvent.VK_W, Event.CTRL_MASK, true));
			jMenuItemConvert.setText("转换压缩文件格式");
			jMenuItemConvert.setAccelerator(KeyStroke.getKeyStroke(
					KeyEvent.VK_C, Event.CTRL_MASK, true));
			jMenuItemSearch.setText("查找文件");
			jMenuItemSearch.setAccelerator(KeyStroke.getKeyStroke(
					KeyEvent.VK_F, Event.CTRL_MASK, true));
			jMenuItemInfo.setText("显示信息");
			jMenuItemInfo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I,
					Event.CTRL_MASK, true));
			jMenuItemAdd.setText("添加文件到压缩文件中");
			jMenuItemAdd.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A,
					Event.ALT_MASK, true));
			jMenuItemExtract.setText("解压到指定文件夹");
			jMenuItemExtract.setAccelerator(KeyStroke.getKeyStroke(
					KeyEvent.VK_E, Event.ALT_MASK, true));
			jMenuItemTest.setText("测式压缩文件");
			jMenuItemTest.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T,
					Event.ALT_MASK, true));
			jMenuItemView.setText("查看文件");
			jMenuItemView.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
					Event.ALT_MASK, true));
			jMenuItemDelete.setText("删除文件");
			jMenuItemDelete.setAccelerator(KeyStroke.getKeyStroke(
					KeyEvent.VK_D, Event.ALT_MASK, true));
			jMenuItemRename.setText("重命名文件");
			jMenuItemRename.setAccelerator(KeyStroke.getKeyStroke(
					KeyEvent.VK_R, Event.ALT_MASK, true));
			jMenuItemAddNote.setText("添加压缩文件注释");
			jMenuItemAddNote.setAccelerator(KeyStroke.getKeyStroke(
					KeyEvent.VK_M, Event.ALT_MASK, true));
			jMenuItemEncrypt.setText("加密压缩文件");
			jMenuItemEncrypt.setAccelerator(KeyStroke.getKeyStroke(
					KeyEvent.VK_P, Event.CTRL_MASK, true));
			jMenuHelpAbout.setText("关于");
			jJMenuBar.add(getFileMenu());
			jJMenuBar.add(getCommandMenu());
			jJMenuBar.add(getToolsMenu());
			jJMenuBar.add(getHelpMenu());
		}
		return jJMenuBar;
	}

	/**
	 * This method initializes jMenu
	 * 
	 * @return javax.swing.JMenu
	 */
	private JMenu getFileMenu() {
		if (jMenuFile == null) {
			jMenuFile = new JMenu();
			jMenuFile.setText("文件(F)");
			jMenuFile.setMnemonic(KeyEvent.VK_F);
			jMenuFile.add(jMenuItemOpen);
			jMenuFile.add(jMenuItemView);
			jMenuFile.addSeparator();
			jMenuFile.add(jMenuItemSelectAll);
			jMenuFile.add(jMenuItemSelect);
			jMenuFile.add(jMenuItemUnselect);
			jMenuFile.add(jMenuItemSelectRest);
			jMenuFile.addSeparator();
			jMenuFile.add(jMenuItemExit);
		}
		return jMenuFile;
	}

	/**
	 * This method initializes jMenu
	 * 
	 * @return javax.swing.JMenu
	 */
	private JMenu getCommandMenu() {
		if (jMenuCommand == null) {
			jMenuCommand = new JMenu();
			jMenuCommand.setText("命令(C)");
			jMenuCommand.setMnemonic(KeyEvent.VK_C);
			jMenuCommand.add(jMenuItemAdd);
			jMenuCommand.add(jMenuItemExtract);
			jMenuCommand.add(jMenuItemTest);
			jMenuCommand.addSeparator();
			jMenuCommand.add(jMenuItemView);
			jMenuCommand.add(jMenuItemDelete);
			jMenuCommand.add(jMenuItemRename);
			jMenuCommand.addSeparator();
			jMenuCommand.add(jMenuItemAddNote);
		}
		return jMenuCommand;
	}

	/**
	 * This method initializes jMenu
	 * 
	 * @return javax.swing.JMenu
	 */
	private JMenu getToolsMenu() {
		if (jMenuTools == null) {
			jMenuTools = new JMenu();
			jMenuTools.setText("工具(S)");
			jMenuTools.setMnemonic(KeyEvent.VK_S);
			jMenuTools.add(jMenuItemWizard);
			jMenuTools.addSeparator();
			jMenuTools.add(jMenuItemConvert);
			jMenuTools.add(jMenuItemEncrypt);
			jMenuTools.addSeparator();
			jMenuTools.add(jMenuItemSearch);
			jMenuTools.add(jMenuItemInfo);
		}
		return jMenuTools;
	}

	/**
	 * This method initializes jMenu
	 * 
	 * @return javax.swing.JMenu
	 */
	private JMenu getHelpMenu() {
		if (jMenuHelp == null) {
			jMenuHelp = new JMenu();
			jMenuHelp.setText("帮助(H)");
			jMenuHelp.setMnemonic(KeyEvent.VK_H);
			jMenuHelp.add(jMenuHelpAbout);
		}
		return jMenuHelp;
	}

	/**
	 * This method initializes jToolBar
	 * 
	 * @return javax.swing.JToolBar
	 */
	private JToolBar getJToolBar() {
		if (jToolBar == null) {
			jToolBar = new JToolBar();
			jToolBar.setPreferredSize(new java.awt.Dimension(397, 60));
			jToolBar.add(getJBtnAdd());
			jToolBar.add(getJBtnExtract());
			jToolBar.add(getJBtnTest());
			jToolBar.add(getJBtnEncrypt());
			jToolBar.add(getJBtnView());
			jToolBar.add(getJBtnDelete());
			jToolBar.add(getJBtnSearch());
			jToolBar.add(getJBtnWizard());
			jToolBar.add(getJBtnInfo());
			jToolBar.addSeparator();
			jToolBar.add(getJBtnExit());
		}
		return jToolBar;
	}

	/**
	 * This method initializes jSplitPane
	 * 
	 * @return javax.swing.JSplitPane
	 */
	private JSplitPane getJSplitPane() {
		if (jSplitPane == null) {
			jSplitPane = new JSplitPane();
			jSplitPane.setRightComponent(getJScrollPane2());
			jSplitPane.setLeftComponent(getJScrollPane1());
		}

⌨️ 快捷键说明

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