📄 jartool.java
字号:
package util.compress;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class JarTool implements Jar.ProgressListener, ActionListener{
final static String m_title = "JarTool";
JFrame frame;
JButton btnJar, btnUnJar;
JProgressBar pbProgress;
long processedSize;
public void JarProcessBegin(int totalFiles, long totalSize){
pbProgress.setMaximum((int)Math.abs(totalSize));
processedSize = 0;
frame.setTitle(m_title + " ...");
}
public void JarProcess(int totalFiles, long totalSize, long fileSize){
processedSize += fileSize;
pbProgress.setValue((int)Math.abs(processedSize));
// System.out.println(100 * processedSize / totalSize + "%");
pbProgress.setString(100 * processedSize / totalSize + "%");
pbProgress.paint(pbProgress.getGraphics());
}
public void JarProcessEnd(int totalFiles, long totalSize){
pbProgress.setValue((int)Math.abs(totalSize));
pbProgress.setValue(0);
JOptionPane.showMessageDialog(null, "Completed!");
frame.setTitle(m_title);
}
void doCompress(){
JFileChooser chooser = new JFileChooser();
chooser.setDialogTitle("Choose files to compress");
chooser.setMultiSelectionEnabled(true);
chooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int returnVal = chooser.showOpenDialog(frame);
if(returnVal == JFileChooser.APPROVE_OPTION) {
JFileChooser fcSave = new JFileChooser();
fcSave.setDialogTitle("Specify a file to save");
int ret = fcSave.showSaveDialog(frame);
if (ret == JFileChooser.APPROVE_OPTION) {
Jar compresser = new Jar();
compresser.addProgressListener(this);
compresser.jar(chooser.getSelectedFiles(), fcSave.getSelectedFile());
}
}
}
void doDeCompress(){
JFileChooser chooser = new JFileChooser();
chooser.setDialogTitle("Choose a zip/jar file:");
int returnVal = chooser.showOpenDialog(frame);
if(returnVal == JFileChooser.APPROVE_OPTION) {
JFileChooser fcSave = new JFileChooser();
fcSave.setDialogTitle("Choose a directory for decompressed files:");
fcSave.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
int ret = fcSave.showSaveDialog(frame);
if (ret == JFileChooser.APPROVE_OPTION) {
Jar deCompresser = new Jar();
deCompresser.addProgressListener(this);
deCompresser.unJar(chooser.getSelectedFile(), fcSave.getSelectedFile());
}
}
}
public void actionPerformed(ActionEvent ae){
if (ae.getSource() == btnJar) doCompress();
else if (ae.getSource() == btnUnJar) doDeCompress();
}
public JarTool(){
processedSize = 0;
initFrame();
}
public void initFrame(){
frame = new JFrame("Jar tool");
btnJar = new JButton("Compress");
btnUnJar = new JButton("Decompress");
btnJar.addActionListener(this);
btnUnJar.addActionListener(this);
pbProgress = new JProgressBar();
pbProgress.setStringPainted(true);
JPanel pane = (JPanel)frame.getContentPane();
pane.setLayout(new BorderLayout());
pane.add(pbProgress, BorderLayout.CENTER);
JPanel btnContainer = new JPanel();
btnContainer.add(btnJar);
btnContainer.add(btnUnJar);
pane.add(btnContainer, BorderLayout.SOUTH);
frame.pack();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setVisible(true);
}
public static void main(String[] args){
TestJar test = new TestJar();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -