📄 mainframe.java
字号:
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 + -