import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Downloader{
JFrame frame;
JPanel center;
JLabel lab,pic;
JTextField jtf;
JProgressBar jpb;
JButton but;
Font font = new Font("宋体",1,20);
public Downloader(){
frame = new JFrame("资源下载小工具 v1.0");
lab = new JLabel("请输入资源地址:");
jtf = new JTextField(20);
but = new JButton("开始下载");
jpb = new JProgressBar();
jpb.setStringPainted(true);
pic = new JLabel(new ImageIcon("1.jpg"));
but.addActionListener(new DownListener());
lab.setFont(font);
jtf.setFont(font);
but.setFont(font);
jpb.setFont(font);
JPanel top = new JPanel();
top.add(lab);
top.add(jtf);
top.add(but);
top.add(jpb);
center = new JPanel(new BorderLayout());
center.add(pic);
frame.add(top,"North");
frame.add(center);
top.setBackground(Color.WHITE);
center.setBackground(Color.WHITE);
frame.setSize(800,600);
frame.setVisible(true);
frame.setDefaultCloseOperation(3);
}
public static void main(String[] args){
new Downloader();
}
class DownListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent ae){
DownloadThread dt = new DownloadThread();
dt.start();
}
}
class DownloadThread extends Thread{
@Override
public void run(){
try{
String str = jtf.getText();
String fileName = str.substring(str.lastIndexOf("/") +1);
URL url = new URL(str);
URLConnection uc = url.openConnection();
int total = uc.getContentLength();
int current = 0;
int lastPercent = -1;
InputStream is = uc.getInputStream();
FileOutputStream fos = new FileOutputStream(fileName);
byte[] data = new byte[5<<20];
int len;
while((len = is.read(data)) != -1){
fos.write(data,0,len);
if(current == 0){
center.removeAll();
center.add(new JLabel(new ImageIcon("2.gif")));
center.updateUI();
}
current += len;
int percent = (int)(current*100L/total);
if(percent != lastPercent){
jpb.setValue(percent);
lastPercent = percent;
}
}
is.close();
fos.close();
if(current == total){
JOptionPane.showMessageDialog(frame,fileName + "已经下载完成!");
center.removeAll();
center.add(new JLabel(new ImageIcon("3.jpg")));
center.updateUI();
}
}catch(Exception e){
e.printStackTrace();
}
}
}
}