复制大容量文件使用进度条_第1页
复制大容量文件使用进度条_第2页
复制大容量文件使用进度条_第3页
复制大容量文件使用进度条_第4页
复制大容量文件使用进度条_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java程序设计课程设计复制大容量文件使用进度条课程名称:Java程序设计课程设计题目名称:复制大容量文件使用进度条系 别:计算机科学系年级专业:14级学 号:姓名:任课教师:成绩:201年月日一、作品简介复制大容量文件使用进度条的小程序,要求完成的功能如下:用户单击“选择文件”按钮,打开文件选择器(如图2),用户选择被复制文件的源地址;用户单击“选择地址”按钮,打开文件夹选择器(如图3),用户选择目标地址;用户单击“确定复制”按钮后(如图1),程序实现自动复制的功能。但若复制大容量文件,需要较长的时间,为使用户了解复制的进度,当复制需要的时间超过2秒,程序在运行复制功能的提示,自动显示进度条

2、。二、设计思想这个程序主要设计的窗口有两个,一个是操作复制文件用的界面,还有一个就是检测到文件复制超过两秒时,跳出来的进度条窗口界面。控制读取文件的速度是这个程序的主要难点,要实现控制进度条显示的快慢可以通过每次从文件中读取的字节数进行控制。三、设计技术和方法(一)设计平台1操作系统:Windows 7 旗舰版2JDK版本:jdk-7 windows-x643IDE版本:eclipse4.44开发语言:Java(二)程序设计分析和主要步骤1.创建窗体类UserMoniterFrame,该类继承自JFrame类。2.在该类中添加控件,实现窗体布局,该窗体中的主要控件及说明:JTextField:

3、pathTextField(显示要复制的文件地址),saveTextField(显示复制后文件的保存地址)。Jbutton:pathButton(显示“选择文件”的按钮控件),saveButton(显示“选择地址”的按钮控件),copyButton(显示“确定复制”的按钮控件)。3.编写工具类ProgressMonitorTest,在该类中定义复制文件时,显示进度条方法useProgressMonitor()。该方法包含一个JFrame类型的参数,用于指定显示进度条所依赖的窗体:还有两个类型的参数,分别用于指定要复制的文件以及复制后的文件保存地址。具体代码如下: public void use

4、ProgressMonitor(JFrame frame, String copyPath, String newPath) try File file = new File(copyPath); / 根据要复制的文件创建File对象 File newFile = new File(newPath); / 根据复制后文件的保存地址创建File对象 FileOutputStream fop = new FileOutputStream(newFile); / 创建FileOutputStream对象 InputStream in = new FileInputStream(file); / 读取

5、文件,如果总耗时超过2秒,将会自动弹出一个进度监视窗口。 ProgressMonitorInputStream pm = new ProgressMonitorInputStream( frame, "文件读取中,请稍后.", in); int c = 0; byte bytes = new byte1024; / 定义byte数组 while (c = pm.read(bytes) != -1) / 循环读取文件 fop.write(bytes, 0, c); / 通过流写数据 fop.close(); / 关闭输出流 pm.close(); / 关闭输入流 catch

6、(Exception ex) ex.printStackTrace(); 四、设计体会和感想在课设过程中超过两秒读取进度条的代码让我琢磨了很久,也查阅了很多资料,相对于自己的能力,我觉得做这个代码明显有点有心无力,这也暴露出了自己长期在学习方法上存在的错误。我觉得在经过这次课程设计后,我需要花费更多地时间在计算机编码上,因为基础不足,课设花费了我很多的时间和精力,既然已经打算以后在计算机领域发展,我就应该对自己有更高的要求来弥补我的缺点,这是我这次课设过程中逐渐生成的想法。五、源代码(一)源代码package 进度条;import java.awt.BorderLayout;import ja

7、va.awt.EventQueue;import java.awt.FileDialog;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JFileChooser;import javax.swing.JLabel;import javax.swing.JTextField;import javax.swing.JButton;import javax.swing.SwingUtilities;import javax.swi

8、ng.UIManager;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.io.FileInputStream;import java.io.*;import javax.swing.JFrame;import javax.swing.ProgressMonitorInputStream;class ProgressMonitorTest public void useProgressMonitor(JFrame frame, String copyPath, String n

9、ewPath) try File file = new File(copyPath); / 根据要复制的文件创建File对象 File newFile = new File(newPath); / 根据复制后文件的保存地址创建File对象 FileOutputStream fop = new FileOutputStream(newFile); / 创建FileOutputStream对象 InputStream in = new FileInputStream(file); / 读取文件,如果总耗时超过2秒,将会自动弹出一个进度监视窗口。 ProgressMonitorInputStream

10、 pm = new ProgressMonitorInputStream( frame, "文件读取中,请稍后.", in); int c = 0; byte bytes = new byte1024; / 定义byte数组 while (c = pm.read(bytes) != -1) / 循环读取文件 fop.write(bytes, 0, c); / 通过流写数据 fop.close(); / 关闭输出流 pm.close(); / 关闭输入流 catch (Exception ex) ex.printStackTrace(); public class UserM

11、onitorFrame extends JFrame implements Runnable private JPanel contentPane; private JTextField pathTextField; private JTextField saveTextField; /* * Launch the application. */ public static void main(String args) EventQueue.invokeLater(new Runnable() public void run() try UserMonitorFrame frame = new

12、 UserMonitorFrame(); frame.setVisible(true); catch (Exception e) e.printStackTrace(); ); /* * Create the frame. */ public UserMonitorFrame() setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 481, 231); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5); s

13、etContentPane(contentPane); contentPane.setLayout(null); setTitle("在复制文件时使用进度条"); JPanel panel = new JPanel(); panel.setBounds(0, 0, 465, 262); contentPane.add(panel); panel.setLayout(null); JLabel pathLabel = new JLabel("文件地址:"); pathLabel.setBounds(42, 45, 72, 15); panel.add(pa

14、thLabel); pathTextField = new JTextField(); pathTextField.setBounds(124, 42, 197, 21); panel.add(pathTextField); pathTextField.setColumns(10); JButton pathButton = new JButton("选择文件"); pathButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) do_pathBu

15、tton_actionPerformed(arg0); ); pathButton.setBounds(341, 41, 93, 23); panel.add(pathButton); JLabel saveLabel = new JLabel("复制地址:"); saveLabel.setBounds(42, 104, 72, 15); panel.add(saveLabel); saveTextField = new JTextField(); saveTextField.setBounds(124, 101, 197, 21); panel.add(saveTextF

16、ield); saveTextField.setColumns(10); JButton saveButton = new JButton("选择地址"); saveButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) do_saveButton_actionPerformed(arg0); ); saveButton.setBounds(341, 100, 93, 23); panel.add(saveButton); JButton copy

17、Button = new JButton("确定复制"); copyButton.addActionListener(new ActionListener() public void actionPerformed(ActionEvent arg0) do_copyButton_actionPerformed(arg0); ); copyButton.setBounds(169, 145, 93, 23); panel.add(copyButton); / 定义获取只可以选择文件夹的选择框 public JFileChooser getChooser() JFileChoo

18、ser fd = new JFileChooser(); String windows = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel" try UIManager.setLookAndFeel(windows); catch (Exception e) e.printStackTrace(); / 设置见面风格 SwingUtilities.updateComponentTreeUI(fd);/ 使设置的界面风格生效 fd.setFileSelectionMode(fd.DIRECTORIES_ONLY); /

19、指示只显示目录 fd.showOpenDialog(this); return fd; /选择要复制的文件按钮的单击事件 protected void do_pathButton_actionPerformed(ActionEvent arg0) java.awt.FileDialog fd=new FileDialog(this); fd.setVisible(true); String filePath = fd.getDirectory()+fd.getFile(); pathTextField.setText(filePath); /选择保存文件地址的按钮单击事件 protected void do_saveButton_actionPerformed(ActionEvent arg0) JFileChooser fd = getChoose

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论