Java中使用组件编写窗口实现网上文件的下载

本文提供了一个使用Java实现从网络下载文件的示例代码。该示例通过Swing创建了简单的用户界面,允许用户输入文件URL并指定本地保存路径。代码展示了如何处理网络请求、读取文件流并将文件保存到本地。

更多技术文章请访问我的个人博客http://www.rain1024.com

如图

package com.rain.get;
import java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
import javax.swing.*;
//从网络取得文件
public class GetFileDemo extends JFrame{
    JTextField jtfUrl;  //输入文件地址url
    JButton jbGetFile;  //取文件按钮
    JLabel jlInfo; //显示提示信息
    public GetFileDemo(){
        super("从网络取得文件");  //调用父类构造函数
        Container container=getContentPane();   //得到容器
        jtfUrl=new JTextField(18); //实例化地址输入框
        jbGetFile=new JButton("取文件");  //实例化按钮
        jlInfo=new JLabel(); 
        JPanel p=new JPanel();  //实例化一个面板,用于容纳地址输入框和取文件按钮
        p.add(jtfUrl); //增加组件到面板上
        p.add(jbGetFile);
        container.add(p,BorderLayout.NORTH);  //增加组件到容器上
        container.add(jlInfo,BorderLayout.CENTER);
        jbGetFile.addActionListener(new ActionListener(){  //按钮事件处理
            public void actionPerformed(ActionEvent ent){
                try{
                    jlInfo.setText("正在读取");
                    URL url=new URL(jtfUrl.getText());    //得到文件的URL地址
                    InputStream in=url.openStream();  //得到文件输入流
                    String outFilename=JOptionPane.showInputDialog(GetFileDemo.this,"输入保存文件名 "); //输入保存的文件名
                    FileOutputStream out=new FileOutputStream(outFilename);  //得到文件输出流
                    byte[] buffer=new byte[1024]; //缓冲区大小
                    int length;
                    while ((length=in.read(buffer))!=-1){  //读取数据
                        out.write(buffer,0,length);  //写入数据到文件
                    } 
                    out.close(); //关闭文件输出流
                    in.close();  //关闭输入流             
                    jlInfo.setText("读取文件成功");  //显示提示信息
                }
                catch(Exception ex){
                    ex.printStackTrace(); //输出出错信息
                    jlInfo.setText("读取文件失败");
                }
            }
        });
        setSize(320,100);  //设置窗口尺寸
        setVisible(true);  //设置窗口可视
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  //关闭窗口时退出程序
    }
    public static void main(String[] args){
        new GetFileDemo();
    }
}

更多技术文章请访问我的个人博客http://www.rain1024.com

整理了Java GUI编程基础知识! public class AllFrame { /** * 这里的代码涉及到 GUI 编程基本面板、基本组件、事件(ActionListener、ChangeListener、MouseListener) */ public AllFrame() { // new 一个主窗体 也可以这样写 new MainFrame(); MainFrame mf = new MainFrame(); } public static void main(String[] args) { new AllFrame(); } // 主窗体 继承 窗体基本格式 类 Jframe 以下弹出窗口均继承 Jframe class MainFrame extends Jframe implements ActionListener { JMenuBar menubar = new JMenuBar();;// 菜单条 JMenu jmenu[] = new JMenu[5];// panelMenu,usedMenu1,usedMenu2,layoutMenu,helpMenu; // 菜单项 JButton closebtn;// 关闭窗体 // 具体的选项 JMenuItem panelitem[] = new JMenuItem[4]; JMenuItem useditem1[] = new JMenuItem[6]; JMenuItem useditem2[] = new JMenuItem[6]; JMenuItem layoutitem[] = new JMenuItem[3]; JMenuItem helpitem = new JMenuItem("关于"); // 菜单中名称 String menu[] = { "面板使用", "常用组件一", "常用组件二", "布局设置", "帮助" }; String pane[] = { "普通面板", "滚动面板", "分割面板", "选项面板" }; String uesd1[] = { "标签", "按钮", "文本框", "文本域", "单选按钮" ,"微调"}; String uesd2[] = { "滑块","复选框", "下拉菜单", "列表", "表格", "树状" }; String layout[] = { "流式布局", "边界布局", "网格布局" }; // Jpanelitem,Jscrollpaneitem,Splitpaneitem,JTabbedpanelitem, // Jlabelitem,Jbuttonitem,JTextfielditem,JTextareaitem,JRadiobuttonitem, // JCheckboxitem,JCombomoxitem,Jlistitem,Jtableitem,Jtreeitem, // Flowlayoutitem,Borderlayoutitem,Girdlayoutitem, // Helpitem}; public MainFrame() { this.setTitle("JAVA图型界面学习(GUI)"); // 加载菜单条到窗体中 this.setJMenuBar(menubar); // 重新设置大小 this.setSize(380, 290); // 简单的居中方法 在窗体基本格式类 Jframe 中有详细的居中方法 this.setLocationRelativeTo(null); // 设置关闭窗口 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 调用方法 menu(); // 设置容器 Container con = this.getContentPane(); // 定义一个 标签 “JAVA图型界面学习” JLabel jl = new JLabel("JAVA图型界面学习"); // 组件 设置字体大小, 其他组件用法相同 jl.setFont(new Font("隶书", Font.BOLD, 24)); // 具体定位 组件名.setBounds(x, y, width, height) jl.setBounds(30, 30, 280, 50); // 把标签加到 con 容器中 con.add(jl); /
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值