package globleGet.gui;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import globleGet.download.*;
import globleGet.gui.*;
import java.util.ArrayList;
public class MainFrame extends JFrame
{
private DefaultListModel model;
private JList lst_downfiles;
private ItemPane itp_fileProperity;
private ToolPane toolpane;
private int lst_pos=-1;
public MainFrame()
{
super("GlobalGet 多线程下载程序");
ini();
setGUI();
setEvent();
Displace dis=new Displace();
dis.setDaemon(true);
dis.setPriority(7);
dis.start();
}
/**
*功能:加载序列化文件
*/
private void ini()
{
File myDownfiles=new File(".\\downfiles.data");
if (myDownfiles.exists())
{
ObjectInputStream ois=null;
try
{
ois=new ObjectInputStream(new FileInputStream(myDownfiles));
model=(DefaultListModel)(ois.readObject());
ois.close();
DownLoadInfo tmp_info;
int len=model.getSize();
for(int i=0;i<len;i++)
{
tmp_info=(DownLoadInfo)(model.getElementAt(i));
if (!tmp_info.isFinished())
{
MultiDownLoad md=new MultiDownLoad(tmp_info);
md.MultiDown();
}
}
lst_pos=len-1;
}
catch(Exception e)
{
try
{
ois.close();
}
catch(Exception e1)
{}
JOptionPane.showMessageDialog(this,"加载历史下载文件出错!");
return;
}
}
else
{
model=new DefaultListModel();
}
}
/**
*功能:保存序列化文件
*/
private void saveModel()
{
ObjectOutputStream oos=null;
try
{
oos=new ObjectOutputStream(new FileOutputStream(".\\downfiles.data"));
oos.writeObject(model);
}
catch(Exception e)
{
JOptionPane.showMessageDialog(this,"系统关闭时出错,可能丢失部分下载信息!");
}
finally
{
try
{
oos.close();
}
catch(Exception e2)
{}
}
}
public void setGUI()
{
//构建List列表布局
lst_downfiles=new JList(model);
lst_downfiles.setBorder(BorderFactory.createEtchedBorder());
JScrollPane sp_lst=new JScrollPane(lst_downfiles);
sp_lst.setPreferredSize(new Dimension(200,360) ) ;
//创建文件下载属性面板
itp_fileProperity=new ItemPane();
itp_fileProperity.setPreferredSize(new Dimension(400,360) ) ;
//构建窗口上方布局
JPanel top_pane=new JPanel();
top_pane.setLayout(new BorderLayout());
top_pane.add(sp_lst,BorderLayout.WEST);
top_pane.add(itp_fileProperity,BorderLayout.CENTER);
top_pane.setBorder(BorderFactory.createEtchedBorder());
//创建toolbar面板
toolpane=new ToolPane();
//构建Frame布局
this.setLayout(new BorderLayout());
this.getContentPane().add(top_pane,BorderLayout.CENTER);
this.getContentPane().add(toolpane,BorderLayout.SOUTH);
//设置Frame显示属性
this.setSize(600,400);
this.setLocation(200,200);
this.setVisible(true);
this.setResizable(false);
}
public void setEvent()
{
//this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.toolpane.btnTask.addActionListener(new AddTaskListener(this));
this.toolpane.btnClose.addActionListener(new CloseListener());
this.lst_downfiles.addListSelectionListener(new SelectTaskListener());
this.addWindowListener(new JFrameCloseListener());
}
public static void main(String[] args)
{
new MainFrame();
}
//事件监听器程序
//添加下载任务监听器类
class AddTaskListener implements ActionListener
{
MainFrame f;
public AddTaskListener(MainFrame f)
{
this.f=f;
}
public void actionPerformed(ActionEvent e)
{
//调用添加任务对话框
TaskDialog taskInfo=new TaskDialog(f);
//创建下载任务
if (taskInfo.getBtn())
{
addTask(taskInfo);
}
}
}
//点击关闭按钮监听器类
class CloseListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
saveModel();
System.exit(0);
}
}
//点击JFrame关闭窗口监听器类
class JFrameCloseListener extends WindowAdapter
{
public void windowClosing(WindowEvent e)
{
saveModel();
System.exit(0);
}
}
//列表框选择内容改变监听器
class SelectTaskListener implements ListSelectionListener
{
public void valueChanged(ListSelectionEvent e)
{
int index=lst_downfiles.getSelectedIndex();
setFileProperity(index);
lst_pos=index;
}
}
//设置下载文件属性
private void setFileProperity(int index)
{
DownLoadInfo tmp_info=(DownLoadInfo)(model.elementAt(index));
String tmp_file=tmp_info.getSaveFileName();
float tmp_len=tmp_info.getFileLength();
itp_fileProperity.lab_filename.setText(tmp_file.substring(tmp_file.lastIndexOf("\\")+1));
if (tmp_len<500)
{
itp_fileProperity.lab_filesize.setText(tmp_len+"bytes");
}
else if(tmp_len<1024*1024)
{
tmp_len=Math.round(tmp_len/1024*100)/100.0f;
itp_fileProperity.lab_filesize.setText(tmp_len+"k");
}
else
{
tmp_len=Math.round(tmp_len/1024/1024*100)/100.0f;
itp_fileProperity.lab_filesize.setText(tmp_len+"M");
}
itp_fileProperity.pbar_model.setValue(tmp_info.getDownProgress());
itp_fileProperity.pbar.setString("下载进度"+itp_fileProperity.pbar.getValue()+"%");
tmp_len=tmp_info.getDownSpeed();
itp_fil
没有合适的资源?快使用搜索试试~ 我知道了~
java开发的多线程下载工具(有源码,可运行)
共58个文件
class:44个
java:9个
mf:3个
5星 · 超过95%的资源 需积分: 5 43 下载量 22 浏览量
2011-03-31
12:19:40
上传
评论 2
收藏 83KB RAR 举报
温馨提示
java开发的多线程下载工具,可用于中期检查,课程设计,毕业设计等等。有论文,有数据库,可运行。
资源推荐
资源详情
资源评论
收起资源包目录
MultiThreadDownload.rar (58个子文件)
MultiThreadDownload
globleGet
META-INF
MANIFEST.MF 108B
download
MultiDownLoad.class 967B
ListenThread.class 1KB
DownLoadUtil.class 3KB
TestResult.class 482B
DownLoadThread.class 3KB
DownLoadInfo.class 3KB
ListenThread$MyTimerTask.class 2KB
gui
TaskDialog$BtnOKListener.class 2KB
MainFrame$JFrameCloseListener.class 588B
Tool_pane.class 886B
Top_pane.class 2KB
MainFrame$Displace.class 666B
ItemPane.class 4KB
TaskDialog$BtnCancelListener.class 878B
ToolPane$1.class 578B
TaskDialog.class 3KB
MainFrame$CloseListener.class 603B
TaskDialog$OpenChooserListener.class 1KB
MainFrame.class 7KB
ToolPane.class 897B
MainFrame$AddTaskListener.class 789B
MainFrame$SelectTaskListener.class 822B
class
globleGet
META-INF
MANIFEST.MF 108B
download
MultiDownLoad.class 967B
ListenThread.class 1KB
DownLoadUtil.class 3KB
TestResult.class 482B
DownLoadThread.class 3KB
DownLoadInfo.class 3KB
ListenThread$MyTimerTask.class 2KB
gui
TaskDialog$BtnOKListener.class 2KB
MainFrame$JFrameCloseListener.class 588B
Tool_pane.class 886B
Top_pane.class 2KB
MainFrame$Displace.class 666B
ItemPane.class 4KB
TaskDialog$BtnCancelListener.class 878B
ToolPane$1.class 578B
TaskDialog.class 3KB
MainFrame$CloseListener.class 603B
TaskDialog$OpenChooserListener.class 1KB
MainFrame.class 7KB
ToolPane.class 897B
MainFrame$AddTaskListener.class 789B
MainFrame$SelectTaskListener.class 822B
downloads
src
src_gui
MainFrame.java 10KB
ToolPane.java 1KB
ItemPane.java 7KB
TaskDialog.java 9KB
src_download
DownLoadThread.java 4KB
MultiDownLoad.java 1KB
DownLoadUtil.java 4KB
ListenThread.java 3KB
DownLoadInfo.java 6KB
MANIFEST.MF 108B
downfiles.data 397B
GlobleGet.jar 26KB
共 58 条
- 1
闯创
- 粉丝: 30
- 资源: 32
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页