📄 myzipframe.java~10~
字号:
package myzip;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.util.*;
import java.util.zip.*;
import javax.swing.border.*;
import javax.swing.event.*;
import javax.swing.filechooser.FileFilter;
/**
* <p>Title: zip</p>
* <p>Description: zip files</p>
* <p>Copyright: Copyright (c) 2005</p>
* <p>Company: qlsc</p>
* @author Wang Tao
* @version 1.0
*/
public class MyZipFrame extends JFrame implements ListSelectionListener {
JPanel contentPane;
JMenuBar jMenuBar1 = new JMenuBar();
JMenu jMenuFile = new JMenu();
JMenuItem jMenuFileExit = new JMenuItem();
JMenu jMenuHelp = new JMenu();
JMenuItem jMenuHelpAbout = new JMenuItem();
BorderLayout borderLayout1 = new BorderLayout();
JMenuItem jMenuFileOpenFile = new JMenuItem();
JMenuItem jMenuFileOpenDir = new JMenuItem();
JMenuItem jMenuFileOpenZip = new JMenuItem();
JPanel buttonPanel = new JPanel();
FlowLayout flowLayout1 = new FlowLayout();
JButton zipButton = new JButton();
JButton unzipButton = new JButton();
JPanel listPanel = new JPanel();
JPanel barPanel = new JPanel();
JButton openButton = new JButton();
TitledBorder titledBorder1;
JLabel messageLabel = new JLabel();
JProgressBar ProgressBar = new JProgressBar();
ImageIcon zipIcon=new ImageIcon("zip.jpg");
ImageIcon unzipIcon=new ImageIcon("unzip.jpg");
ImageIcon openIcon=new ImageIcon("open.jpg");
JList playlist;
DefaultListModel plvector;
JScrollPane pljsp;
String currentDirectory,url,selectedFile,zipname;
String[] files,record=new String[100];
//Construct the frame
public MyZipFrame() {
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
try {
jbInit();
}
catch(Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception {
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(400, 300));
this.setTitle("Java Zip");
jMenuFile.setText("文件");
jMenuFileExit.setText("退出");
jMenuFileExit.addActionListener(new MyZipFrame_jMenuFileExit_ActionAdapter(this));
jMenuHelp.setText("帮助");
jMenuHelpAbout.setText("关于");
jMenuHelpAbout.addActionListener(new MyZipFrame_jMenuHelpAbout_ActionAdapter(this));
jMenuFileOpenFile.setText("压缩文件");
jMenuFileOpenFile.addActionListener(new MyZipFrame_jMenuFileOpenFile_actionAdapter(this));
jMenuFileOpenZip.setText("打开压缩文件");
jMenuFileOpenZip.addActionListener(new MyZipFrame_jMenuFileOpenZip_actionAdapter(this));
buttonPanel.setBorder(BorderFactory.createRaisedBevelBorder());
buttonPanel.setToolTipText("操作板");
buttonPanel.setLayout(flowLayout1);
zipButton.setBackground(Color.lightGray);
zipButton.setMaximumSize(new Dimension(67, 67));
zipButton.setMinimumSize(new Dimension(67, 67));
zipButton.setPreferredSize(new Dimension(62, 63));
zipButton.setToolTipText("添加压缩文件");
zipButton.setIcon(zipIcon);System.out .println(zipIcon.getDescription()+"\n"+zipButton.getIcon().toString());
zipButton.setText("");
zipButton.addActionListener(new MyZipFrame_zipButton_actionAdapter(this));
unzipButton.setBackground(Color.lightGray);
unzipButton.setPreferredSize(new Dimension(65, 63));
unzipButton.setToolTipText("释放压缩文件");
unzipButton.setIcon(unzipIcon);
unzipButton.setText("");
unzipButton.addActionListener(new MyZipFrame_unzipButton_actionAdapter(this));
openButton.setBorder(BorderFactory.createRaisedBevelBorder());
openButton.setToolTipText("打开文件或目录");
openButton.setActionCommand(" open ");
openButton.setBorderPainted(true);
openButton.setBackground(Color.lightGray);
openButton.setSize(100,100);
openButton.setIcon(openIcon);
openButton.setText("");
openButton.addActionListener(new MyZipFrame_openButton_actionAdapter(this));
messageLabel.setText("欢迎使用myZip 进度:");//考虑加入文件信息
jMenuFileOpenDir.setText("压缩目录");
jMenuFileOpenDir.addActionListener(new MyZipFrame_jMenuFileOpenDir_actionAdapter(this));
jMenuFile.add(jMenuFileOpenFile);
jMenuFile.add(jMenuFileOpenDir);
jMenuFile.add(jMenuFileOpenZip);
jMenuFile.addSeparator();
jMenuFile.add(jMenuFileExit);
jMenuHelp.add(jMenuHelpAbout);
jMenuBar1.add(jMenuFile);
jMenuBar1.add(jMenuHelp);
this.setJMenuBar(jMenuBar1);
contentPane.add(buttonPanel, BorderLayout.NORTH);
buttonPanel.add(openButton, null);
buttonPanel.add(zipButton, null);
buttonPanel.add(unzipButton, null);
contentPane.add(listPanel, BorderLayout.CENTER);
contentPane.add(barPanel, BorderLayout.SOUTH);
barPanel.add(messageLabel, null);
barPanel.add(ProgressBar, null);
plvector=new DefaultListModel();
playlist=new JList(plvector);
playlist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
playlist.addListSelectionListener(this);
playlist.setBackground(Color.WHITE );
playlist.setForeground(Color.BLACK);
playlist.addMouseListener(new MouseAdapter() {
/**
* if double clicked then play the selected file
* @param e MouseEvent
*/
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
//处理,文件夹->打开,文件->压缩,压缩文件->解压
if(selectedFile.endsWith(".zip")){
//解压缩
}
else{
//压缩
}
}
}
});
int v=ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
int h=ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
pljsp=new JScrollPane(playlist,v,h);
pljsp.setWheelScrollingEnabled(true);
listPanel.setLayout(new BorderLayout()) ;
listPanel.add(pljsp,BorderLayout.CENTER );
}
public void valueChanged(ListSelectionEvent e) {
}
//File | Exit action performed
public void jMenuFileExit_actionPerformed(ActionEvent e) {
System.exit(0);
}
//Help | About action performed
public void jMenuHelpAbout_actionPerformed(ActionEvent e) {
MyZipFrame_AboutBox dlg = new MyZipFrame_AboutBox(this);
Dimension dlgSize = dlg.getPreferredSize();
Dimension frmSize = getSize();
Point loc = getLocation();
dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x, (frmSize.height - dlgSize.height) / 2 + loc.y);
dlg.setModal(true);
dlg.pack();
dlg.show();
}
//Overridden so we can exit when window is closed
protected void processWindowEvent(WindowEvent e) {
super.processWindowEvent(e);
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
jMenuFileExit_actionPerformed(null);
}
}
//将当前zip文件中的子文件显示在列表中
public void scanZipFile()
{
plvector.removeAllElements();
try
{
ZipInputStream zin=new ZipInputStream(new
FileInputStream(zipname));
ZipEntry entry;
while ((entry = zin.getNextEntry()) !=null)
{
plvector.addElement(entry.getName());
zin.closeEntry();
}
zin.close();
}
catch (IOException e)
{
e.printStackTrace() ;
}
}
public void loadZipFile(String name)
{
try
{
ZipInputStream zin =new ZipInputStream(new
FileInputStream(zipname));
ZipEntry entry;
while ((entry = zin.getNextEntry()) !=null)
{
if (entry.getName().equals(name))
{
BufferedReader in =new BufferedReader(new
InputStreamReader(zin));
//DataOutputStream out
String line;
while ((line = in.readLine())!=null)
{
}
}
zin.closeEntry();
}
zin.close();
}
catch(IOException e)
{
e.printStackTrace() ;
}
}
/**
*<br>方法说明:实现文件的压缩处理
*<br>输入参数:压缩的文件数组
*<br>返回类型:
*/
public void zipFiles(String[] fs){
try{
String fileName = fs[0];
FileOutputStream f =
new FileOutputStream(fileName+".zip");
//使用输出流检查
CheckedOutputStream cs =
new CheckedOutputStream(f,new Adler32());
//声明输出zip流
ZipOutputStream out =
new ZipOutputStream(new BufferedOutputStream(cs));
//写一个注释
out.setComment("A test of Java Zipping");
//对多文件进行压缩
for(int i=1;i<fs.length&&fs[i]!=null;i++){
System.out.println("Write file "+fs[i]);
BufferedReader in =
new BufferedReader(
new FileReader(fs[i]));
out.putNextEntry(new ZipEntry(fs[i]));
int c;
while((c=in.read())!=-1)
out.write(c);
in.close();
}
//关闭输出流
out.close();
System.out.println("Checksum::"+cs.getChecksum().getValue());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -