项目分析
- 首先创建一个public 类,由于涉及到按钮响应,需要实现ActionListener接口。然后构思图形界面大致的结构,需要URL链接,文件目录,两个按钮:下载和选择文件目录。在构造器中实例化这些组件,添加组件到frame中。设置流式布局,将窗口设置可见。
- 接下来添加按钮事件响应,两个按钮都要设置监听器,在actionPerformed
方法中写if逻辑判断是哪个按钮被点击了。处理特殊情况:在没有填写URL或者选择文件目录的情况下,需要用JOptionPane.showMessageDialog提醒用户非法操作。 - 获取到URL和filename后调用downloadFile方法,打开输入流输出流,这里选择BufferedInputStream和BufferedOutputStream。因为两者传输比较快。然后用byte数组接收数据,写到指定文件夹。传输完毕就会显示“下载成功!!!”。
功能模块实现
main方法:创建个匿名对象,执行构造器里的功能。
public类UI:
构造器:实例化组件对象,设置组件属性并添加组件到窗口中,调用按钮响应事件
actionPerformed 方法:处理按钮被点击事件,并给用户反馈响应。即预知用户点击按钮
会发生什么事情。
downloadFile方法:创建BufferedInputStream和BufferedOutputStream对象,打开url的输入流,读取数据到文件中。
整合
package UserInterface;
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import javax.swing.*;
public class UI implements ActionListener{
JFrame frame;
JButton button1; //下载按钮
JButton button2; //保存到文件按钮
JTextField address;
JTextField savefile;
JLabel j1,j2;
JFileChooser choose;
String getlabel;
URL url;
HttpURLConnection huc;
public UI() {
//实例化
frame = new JFrame();
button1 = new JButton("下载");
button2 = new JButton("保存到文件");
address = new JTextField