说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

如何用多线程设计一个下载的程序

编辑:说三道四文库 发布时间:2017-12-14 01:00
HTML文档下载 WORD文档下载 PDF文档下载
Computer001 于 2011-03-17 15:20:10 编辑 以下代码是一个单线程的下载程序,如何实现多线程。
这个单线程的下载程序一按下按钮后程序开始运行了,但是按钮确没有弹起,直到程序运行结束后
按钮才弹起,如何用多线程的方式做呢?
如果是多线程那么是不是就不会出现这样情况?


import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SwingDown extends JFrame {
JTextField jtxtUrl;
JButton jbutDown;
JButton jbutExit;
JLabel Jlb;
JTextArea jta;
JScrollPane js;
BufferedInputStream bis;
FileOutputStream fos;
URL url;
JPanel jpup;
JPanel jpcenter;
JPanel jpdown;
int counter=0;//计数器
public SwingDown(){
this.setLayout(new BorderLayout());
//标签
Jlb = new JLabel();
Jlb.setText("输入地址:");
//输入框
jtxtUrl = new JTextField(33);
//按钮
jbutDown = new JButton();
jbutDown.setText("开始下载");
jbutExit = new JButton();
jbutExit.setText("退出程序");
jbutExit.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent evt){
System.exit(-1);
}
});
//文本域
jta = new JTextArea();
jta.setLineWrap(true);
jta.setForeground(Color.BLUE);
js = new JScrollPane(jta);
//面板上部
jpup = new JPanel();
jpup.add(Jlb);
jpup.add(jtxtUrl);
//面板中部
jpcenter = new JPanel();
jpcenter.setLayout(new GridLayout(1,1));
jpcenter.add(js);
   //面板下部
jpdown = new JPanel();
jpdown.add(jbutDown);
jpdown.add(jbutExit);

this.add(jpup,BorderLayout.NORTH);
this.add(jpcenter,BorderLayout.CENTER);
this.add(jpdown,BorderLayout.SOUTH);

this.setSize(450,200);
this.setVisible(true);
this.setLocation(300,250);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public void downLoad(){
jbutDown.addActionListener( new ActionListener(){
public void actionPerformed(ActionEvent evt)
{
String httpurl = getText();
if(httpurl.equals(""))
{
msg("地址不能为空!请重新输入!");
jtxtUrl.setText("");
jtxtUrl.requestFocus();
}else{
try{
url = new URL(jtxtUrl.getText());
}catch(Exception e)
{
e.printStackTrace();
}
try{
bis = new BufferedInputStream(url.openStream());
fos = new FileOutputStream(getFileName());
int buffer;
while((buffer = bis.read())!=-1)
{
fos.write(buffer);
counter++;
}
fos.close();
bis.close();
}catch(Exception e)
{
e.printStackTrace();
}
String statusInfo ="下载地址:"+jtxtUrl.getText()+" ; "+
"\n"+"总字节数:"+counter+" ; "+
"\n文件名称:"+getFileName()+" ; "+
"\n"+ "下载文件"+getFileName()+"成功";
jta.setText(statusInfo);
msg("下载成功");
jtxtUrl.setText("");
}
}
});
}
public void msg(String msg){
new JOptionPane().showMessageDialog(null,msg);
}
public String getText(){
return jtxtUrl.getText();
}
public String getFileName(){
return url.getFile().replace("/","");
}
public static void main(String [] args)
{
SwingDown down = new SwingDown();
down.downLoad();
}
}
如何为IE 10编写特定的样式 MySQL手册许可证更改乃是Bug惹得祸 开源世界高峰论坛首批演讲议题公布 测试工程师的心灵鸡汤:谦虚、不沉默、有危机感、不断努力 高德地图API“沿图有你,晒出你的LBS应用”活动拉开帷幕! 谁能找出Windows 8.1的安全漏洞,就将获得微软10万美元奖金! 【直击美国云计算】Facebook分享数据中心新网络架构Fabric 【直击美国云计算】OCP发起产业界的Maker运动 红帽刘长春:开源是推动云计算和大数据发展的重要力量 【直击美国云计算】出货量达x86的20多倍 ARM或将成为数据中心主角 孙小群:将SAP HANA打造为开放的PaaS平台 GitHub推出重大改进:强调速度、内容和交互性 如何打造测试工程师精英团队? 如何做个有“钱”途的测试工程师? 苹果开始关注企业移动化 iOS 7的10大办公功能 “开源群英会2013” 参会名单(持续更新中) 微软Builder2013前瞻 主打跨平台工具及服务 CMDN 29期:软件测试与管理之路 微软IE10与HIT FM 携手打造全新HTML5官网 专访GenMyModel CTO:一款全新在线建模工具背后的故事 【直击美国云计算】Jason Hoffman:数据和计算的融合将破坏全球利润 【直击美国云计算】如何做Hadoop、流处理框架等技术的采用选择 【直击美国云计算】细数云技术领域成王败寇:从SaaS到SDN 【直击美国云计算】谷歌Jeff Dean:成功的关键是专注 致远V5发布:强调大协同,企业移动化真来了 Mailbox:六星期实现从零到百万用户及日处理亿条消息 代码审查,也要天时地利人和 Clash of Clans产品总监:游戏中的商品定价一开始就要高 移动互联网最核心的竞争是:设计的竞争 【直击美国云计算】面对AWS,VMware不会畏缩 美国白宫任命Twitter法务总监Nicole Wong为副CTO 小弟编写了一个实时传送信息软件。遇到一个小问题。请高手解答。--附客户端源代码 帮忙 关于数据库,请教高手! now()取得的是客户端的还是服务器端的时间? 一个用iframe动态调用其他页面的问题,在线等待! XP、2000启动后有一段“休克”期应该怎么解决? 一个奇怪的问题:如何注册BCB6??? servlet怎么得到访问者的ip地址?或者是从那个页面链接过来的? 高手留步 ! 怎样取代系统默认行为 ? 求阶乘的代码,,书上抄的,怎么又有错呀, mysql 3.x.x好像不支持事务,这么办啊? --------用联通手机的兄弟请进来领分!!!-------(续) socket通讯与操作系统有关系吗? 程序员里有多少买了车的? 请高手帮忙 有什么好的VC打包工具吗? 请问如何让程序自动运行?并且如何取消程序的自动运行? 两个问题求助~~~~~~~~~~~~~~~~~~~~ 关于同一台计算机两个id的邮件配置问题 在一个datawindow中放了多个button,如何针对每一个Button进行编程? 派生类的三种继承方式 高薪诚聘 C# 程序员 一个有关失效率的问题,请大侠们指点! sun的j2ee sdk 1.3.1不能在2000server上运行?? [黑色幽默]唉 难道这就是IT人的未来? 几个项目开发问题,有经验者请进。 關於用vb取sybase數據的問題 如何实现呢?请教各位高手,高高手。。。 急。死。问一下UDP的写的一个NETICQ的使用方法.在线等 初学JSP,在用JavaBean创建了一个数据库连接的程序,但是在JSP中用<jsp:useBean>使用JavaBean时出现了问题。 我是新手,一个工程换目录了需要改哪些地方? listview控件网格的高度如何设置啊? 请问TFORM 中的onActivate 事件是在什么时候触发 help 关于菜单 為什麼服務器中的NETLOGON(用戶登錄)服務老是出現錯誤呢? 我的PIII 667 现在启动时自检为333E,然后进入CMOS,提示CPU频率不对,这是什么原因? 分不多了,帮我看看这个短小超难的SQL怎么写 unsigned char * 和 object pascal 中的什么是等价的?pchar 是无符号的么? 那位大哥帮看看 这句为什么总编译不过去 xiexie trectangle类型为什么总说我没有定义?在线等…… 为何收不到邮件的BODY部分? platform builder platform 时出错 有关SQLJ的问题 有谁可以提供几个关天isa server的好认坛? 在计划任务中编写t_sql语句的字符长度限制问题! JAVA 图形化编程如何控制组件的大小和位置!!! 如何用ASP上传文件到数据库、读取并下载? 100分求教我的ActiveForm出现access violation at address...的问题(急急急) 最真诚的祝福大力和璇玑! 控制文件损坏,恢复是碰到了难点--ora-00600错误。怎么办??? 请问WebBrowser对象在弹出式窗口中是不是不能用? 何谓“功利”、“功利心”、“注重结果”? 什么是势力心与功利心?请详细说明什么是势力心和什么是功利心.可以加悬赏,不过回答要完整 什么叫功利心重? 背英语书上的原句有用吗我们老师非要背原句,还要一词不差,差一个就算错,我觉得对我没什么提高,我都能理解并且写出的句子正确,意思一致但用词不一样,现在初三英语110左右,新概念1已学 花开花落愿为伊不断守候对应什么字数一样 意思对应 远的组词有哪些 远字组词有哪些 it is one of-----------(mean)experiencesin my life (1/1)Y ♂Baby★筱爽♀ “功利的人”英文表达? 人真渺小 “万家购物”网络传销案二审开庭 主犯杭州一快递员送货路上猝死 过度劳动付日本人气电子宠物菲比精灵 可用iPh德国反驳美国抨击 称顺差体现竞争力2013亚洲旅游节:探索亚洲旅游业发广西和泰国教育交流日趋密切日本今日起举行大规模“夺岛”演习 被澳大利亚两个月间39人遭遇隆胸假体破美澳等多国驻外使馆被曝精心伪装 监听美国务卿首承认:某些时候美间谍活动走朴槿惠访欧正值韩英建交130周年 英黑白无常篝火耶啼11.7秒打法分享奇迹暖暖同人文独家记忆·第三章结局有一种宝宝腹泻,宝妈们根本无需焦虑!将有新忍者 火影忍者手游不删档时间猜三门峡:商铺摆摊“任性”机动车路边乱七大国纪云端帝国清宫丽影套装鉴赏领唱国歌!张艺兴升级成为“中国小骄傲11月13日新内容开启 加开新服\'【UI成长录】“大哥”毕业了!丢掉2梅赛德斯-奔驰2017款S级轿车谍照心理师教你6个纬度看孩子性格气质!九鼎军师大科学家蝶闹蜂忙宣和春官场迷情迷失大陆冒牌神灵至尊无名星宿列神仙楚赵赶驴电梯奇遇记北极猎奇邹城旅游青田旅游红安旅游荔浦旅游霍州旅游齐岳山旅游深渡旅游新郑旅游安溪旅游大圩旅游涞滩旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘