import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.ScrollPaneConstants;
//
public class Exec {
public static void main(String[] args) {
//
DemoWindow dw = new DemoWindow(" ");
// 1/3, 1/3
Toolkit theKit = dw.getToolkit();
Dimension wndSize = theKit.getScreenSize();
dw.setBounds(wndSize.width / 3, wndSize.height / 3, wndSize.width / 3,
wndSize.height / 3);
//
dw.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//
dw.setVisible(true);
}
}
//
class DemoWindow extends JFrame implements ActionListener {
// URL
JTextField jtf = new JTextField(25);
//
JButton jb = new JButton(" ");
//
JTextArea jta = new JTextArea();
//
int v = ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED;
int h = ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED;
JScrollPane jsp = new JScrollPane(jta, v, h);
//
JPanel jp = new JPanel();
//
Downloader downloader;
//
public DemoWindow(String title) {
super(title);
//
jp.setLayout(new FlowLayout(FlowLayout.LEFT));
jp.add(jtf);
jp.add(jb);
add(jp, BorderLayout.NORTH);
add(jsp, BorderLayout.CENTER);
//
jtf.addActionListener(this);
jb.addActionListener(this);
}
//
public void actionPerformed(ActionEvent e) {
//
downloader = new Downloader(jtf.getText(), jta);
//
Thread thread = new Thread(downloader);
thread.start();
}
}
//
class Downloader implements Runnable {
// URL
String urlString;
//
JTextArea jta;
//
public Downloader(String urlString, JTextArea jta) {
//
this.urlString = urlString;
this.jta = jta;
}
//
public void run() {
//
StringBuffer info = new StringBuffer();
try {
// URL
URL url = new URL(urlString);
// URL
URLConnection urlConn = url.openConnection();
//
info.append(" : " + url.getHost() + "
");
info.append(" : " + url.getDefaultPort() + "
");
info.append(" : " + urlConn.getContentType() + "
");
info.append(" : " + urlConn.getContentLength() + "
");
info.append(" ...");
//
jta.setText(info.toString());
//
InputStream is = urlConn.getInputStream();
//
String localFileName = url.getFile().substring(
url.getFile().lastIndexOf("/") + 1);
//
FileOutputStream fos = new FileOutputStream(localFileName);
//
int data;
while ((data = is.read()) != -1) {
fos.write(data);
}
//
is.close();
fos.close();
} catch (Exception e) {
System.out.println(e.getMessage());
}
jta.append(" !");
}
}