- 浏览: 356210 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
tianshawang:
楼主你好偏心啊,把代码给谷歌不给这里
java 实现windows资源管理器 -
tianshawang:
其实我是也想要资源管理器的代码来的。。
java 实现windows资源管理器 -
hcmfys:
<div class="quote_title ...
JAVA 复制 带进度条 时间 百分比 -
qq657052171:
怎么没有代码呢?
java 实现windows资源管理器 -
IT女民工:
楼主,求资源管理器代码~~~~
java 实现windows资源管理器
写得不太好。如果喜欢就下载
/**
* @(#)JprogressBar.java
* it can copy file
* show speed remail time and copy precent
* @author hcmfys
* @version 1.00 2008/5/9
*把我们的智慧献给全人类
*/
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
public class JprogressBar extends JFrame implements Runnable {
public JprogressBar() {
initUI();
}
private void initUI() {
btCopy = new JButton("open file....");
JButton btCancel = new JButton("cancel");
JButton btSavePath = new JButton("save Path...");
copyFileProgressBar = new JProgressBar(0, 100);
copyFileProgressBar.setPreferredSize(new Dimension(450, 15));
copyFileProgressBar.setBackground(Color.GREEN);
copyFileProgressBar.setForeground(Color.PINK);
copyFileProgressBar.setStringPainted(true);
copyFileProgressBar.setVisible(false);
openFileDialog = new JFileChooser(".");
this.setLayout(new BorderLayout());
JPanel tmpPanel1 = new JPanel();
JPanel tmpPanel2 = new JPanel();
btCopy.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Thread t = new Thread(JprogressBar.this);
t.start();
}
});
btSavePath.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
savePath = setSavePath();
}
});
btCancel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
stop = true;
btCopy.setEnabled(true);
}
});
tmpPanel1.add(btCopy);
tmpPanel1.add(btSavePath);
tmpPanel1.add(btCancel);
tmpPanel2.add(copyFileProgressBar);
this.add(tmpPanel1, BorderLayout.NORTH);
this.add(tmpPanel2, BorderLayout.SOUTH);
this.setTitle("read and copy file");
this.setPreferredSize(new Dimension(450, 95));
this.pack();
Dimension cd = centerIt(this);
this.setLocation(cd.width, cd.height);
final Dimension des = this.getPreferredSize();
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
stop = true;
System.exit(0);
}
public void windowStateChanged(WindowEvent e) {
System.out.println("ss");
if (e.paramString().equals("WINDOW_STATE_CHANGED")) {
System.out.println("ss");
JprogressBar.this.setSize(des);
}
}
});
this.addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
// System.out.println("ss");
// JprogressBar.this.setSize(des);
}
});
}
/*
* start read file..
*/
public void run() {
stop = false;
int c = openFileDialog.showOpenDialog(this);
if (c == JFileChooser.APPROVE_OPTION) {
try {
File selectFile = openFileDialog.getSelectedFile();
if (selectFile.equals(savePath)) {
JOptionPane.showMessageDialog(this, " \t target file and source file can't as the same !");
return;
}
if (savePath == null) {
JOptionPane.showMessageDialog(this, " \t please select a path to save file !");
return;
}
btCopy.setEnabled(false);
copyFileProgressBar.setVisible(true);
long size = selectFile.length();
copyFileProgressBar.setMaximum((int) size);
FileInputStream fin = new FileInputStream(selectFile);
FileOutputStream fout = new FileOutputStream(savePath);
byte[] buff = new byte[1024];
int s;
int count = 0;
long startTime = System.currentTimeMillis();
while ((s = fin.read(buff)) > 0 && !stop) {
count += s;
fout.write(buff, 0, s);
String str = "" + 100 * (count / (size + 0.01));
str = forMatString(str);
long endTime = System.currentTimeMillis();
String speedStr = getSpeed(count, startTime, endTime);
String remailTime = getRemailTime(count, size, startTime, endTime);
copyFileProgressBar.setString(" precent: " + str + " %" + " speed: " + speedStr + " " + " remail time : " + remailTime);
copyFileProgressBar.setValue(count);
}
fin.close();
fout.close();
if (!stop) {
JOptionPane.showMessageDialog(this, " \t copy file complete !");
}
stop = true;
savePath = null;
btCopy.setEnabled(true);
copyFileProgressBar.setValue(0);
copyFileProgressBar.setString("");
copyFileProgressBar.setVisible(false);
} catch (Exception ex) {
JOptionPane.showMessageDialog(this, "err:\n" + ex.getMessage());
}
}
}
/*
*select save file path
*/
private File setSavePath() {
File path = null;
int c = openFileDialog.showSaveDialog(this);
if (c == JFileChooser.APPROVE_OPTION) {
path = openFileDialog.getSelectedFile();
}
return path;
}
/*
* make frame center
*/
private Dimension centerIt(Component c) {
Dimension size = c.getSize();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int sH = screenSize.height;
int sW = screenSize.width;
int cW = size.width;
int cH = size.height;
return new Dimension((sW - cW) / 2, (sH - cH) / 2);
}
/*
* show copy file speed
*/
private String getSpeed(long readByte, long startTime, long endTime) {
long speed;
if (endTime - startTime != 0) {
speed = (readByte / (endTime - startTime)) * 1000;
if (speed > 1024 * 1024) {
return forMatString(speed / (1024 * 1024 + 0.1) + "") + " m/s";
} else if (speed > 1024) {
return forMatString(speed / (1024 + 0.1) + "") + " k/s";
} else {
return speed + " b/s";
}
} else {
return "0 b/s";
}
}
/*
* format string
*/
private String forMatString(String str) {
String values;
int index = str.indexOf(".");
values = str.substring(0, index + 3);
return values;
}
/*
* get remail time
*/
private String getRemailTime(long readByte, long totalByte, long startTime, long endTime) {
long hour;
long minute;
long second;
String h;
String m;
String s;
try {
long speed = readByte / (endTime - startTime);
long time = ((totalByte - readByte) / speed) / 1000;
hour = time / 3600;
minute = time % 3600 / 60;
second = time % 3600 % 60;
h = hour + "";
m = minute + "";
s = second + "";
if (hour < 10) {
m = "0" + minute;
}
if (minute < 10) {
m = "0" + minute;
}
if (second < 10) {
s = "0" + second;
}
return h + ":" + m + ":" + s;
} catch (Exception ex) {
return "00:00:00";
}
}
/*
* show frm
*/
public static void main(String[] args) {
JprogressBar frm = new JprogressBar();
frm.setVisible(true);
}
/*
*
*/
private JButton btCopy;
private JFileChooser openFileDialog;
private JProgressBar copyFileProgressBar;
private File savePath = null;
private boolean stop = false;
}
评论
:o 没有那么严重把!
发表评论
-
Java服务器的JSON数据包三重加密算法(转载)
2015-06-03 19:30 1280mina的粘包拆包其实是蛮简单的,只是一开始没搞清楚原理。 J ... -
java ssl (转载)
2014-12-25 17:50 824某项目的业务系统要求 ... -
table
2014-05-27 00:13 801table ... -
java 删除目录
2013-08-01 21:45 878import java.io.File; pub ... -
负载均衡方法
2013-06-05 22:26 1079•随机:负载均衡方法 ... -
&#x 格式数据转换
2013-05-22 11:52 3114import java.io.UnsupportedEnc ... -
Java数据库连接
2012-11-22 10:42 843Java数据库连接(JDBC)由一组用 Java 编程语言编写 ... -
http post
2012-10-31 11:51 937package test.net; import ... -
Java proxy 代理访问网络(转)
2012-10-31 10:12 1488How to make your Java applicati ... -
java版mini编辑器
2012-10-11 15:40 872习惯用Editplus来查看源代码,但是没有代码导航功能,想看 ... -
java excel 导入
2011-12-16 18:04 2228import java.io.FileNotFoundExce ... -
excel 导入
2011-12-16 18:03 1089package *.*; import java.uti ... -
EVAL_BODY_INCLUDE
2011-08-09 10:19 1398EVAL_BODY_INCLUDE:把Body读入存在的输出流 ... -
jrebel的使用
2011-07-06 18:21 967-noverify -javaagent:E:\jrebe ... -
java 实现windows资源管理器
2011-06-27 00:00 2165最近在使用linux的界面,有时候觉得界面很难用,不如wind ... -
Linux下java环境变量设置的完整步骤
2010-10-29 13:32 987从java.sun.com上下载JDK的安装文件,一般是jdk ... -
设置头部,直接下载文件
2010-09-26 10:34 1034string dir = SysSetting.Wave ... -
java 地图查看器
2010-07-25 23:07 1192/** * @(#)GisApp.java * ... -
中国移动 联通 电信 模拟网关服务器
2010-03-29 21:55 1996/Files/hcmfys/SngServer.rar -
basic64
2010-02-09 14:29 1762using System; using System. ...
相关推荐
具体到这个“带进度条的文件上传源代码”,它利用AJAX和DWR实现了一个动态更新的进度条,用户选择文件后,前端会立即显示一个进度条,展示文件上传的百分比。这个过程是通过监听HTTP请求的进度事件完成的,当服务器...
1. **创建进度条**:在用户界面上创建一个进度条控件,可以是GUI应用程序中的ProgressBar,它可以显示复制过程中的百分比。 2. **启动工作线程**:创建一个新的线程,这个线程将执行文件复制的代码。工作线程需要...
有百分比的进度条适用于那些可以精确量化进度的情况,如数据库查询、文件复制等。在JSP中,你可以先在HTML部分定义一个带有百分比显示的进度条: ```html ...
5. **进度显示**:为了提高用户体验,可以考虑添加进度条或者百分比显示,这需要定时更新复制状态并打印到控制台。`System.out.println()` 或 `java.io.PrintStream` 可以用来输出信息。 6. **性能优化**:Java 中...
进度条对话框通常包括一个可视化的进度条,显示任务完成的百分比,以及可能的文字信息,描述当前进行的操作或剩余时间。这种交互设计有助于提高用户体验,因为它们减少了用户的等待焦虑,让用户知道程序并没有卡住,...
下载进度条通过图形化的方式展示文件下载的百分比,帮助用户了解当前操作的进度,减少用户等待的焦虑感,提升用户体验。实现这一功能通常需要在后台监控文件传输的字节数,并与总文件大小进行比较,计算出对应的完成...
`NumberProgressBar`则同时显示了进度条和当前的数值,使得用户能够快速知道进度的百分比或者具体数值。 实现`NumberProgressBar`需要对Android的自定义View有深入理解。通常,我们需要继承自`ProgressBar`类,重写...
同时,为了提供用户体验,可以展示进度条或百分比完成,让用户知道导出的进度。 综上所述,处理20万条记录的Excel导出需要对Java、Apache POI、数据库查询以及性能优化有深入的理解。通过合理利用SXSSFWorkbook,...
可能的实现方式是在每次成功拷贝一个文件后,增加一个计数器或者累加文件大小,然后根据这个比例更新进度条或百分比。这通常需要一个同步机制来保证多线程环境下的正确性。 5. **异常处理**: 文件操作可能抛出...
9. 用户界面(UI)设计:除了核心的复制逻辑,一个好的UI设计能让用户更直观地了解复制状态,如通过百分比、进度条、动画等形式展示。 总结,这个压缩包提供的示例可能涵盖了以上所述的多个方面,包括文件复制、...
确定性进度条显示确切的进度,比如文件复制的百分比;而不确定性进度条,如旋转的沙漏或加载环,表示任务在进行中,但无法提供具体完成的百分比。 在状态栏中集成进度条,需要考虑以下几个设计要点: 1. **空间...
它通过跟踪复制过程中的字节传输,计算已复制部分占总大小的比例,并显示为百分比或其他形式的进度条。这通常涉及到多线程或异步处理,以确保用户界面的响应性不会因为文件复制操作而受到影响。 在"进度复制文件...
- **集成到项目**:将ArcTune库导入Java项目中,通常通过添加依赖或复制源码到项目中。 - **初始化对象**:创建ArcTune实例,指定初始参数如最大进度值。 - **设置动画**:调用相应的API设置动画的起始和结束...
2. **实现原理**:通过计算已处理文件的数量或已传输的数据量,与总文件数量或总数据量做比较,计算出百分比,然后根据这个百分比更新进度条的长度或位置。 3. **编程实现**:在C#、Python、Java等编程语言中,可以...
书名:《Java开发实战1200例(第I卷)》(清华大学出版社.李钟尉,陈丹丹) PDF格式扫描版,全书分为24章,共817页。2011年1月出版。 全书压缩打包成4部分,这是第3部分 注:本系列图书的第I、II卷再版时均相应改名为...
在此代码中,我们计算已读取的字节数,并将其转换为百分比,更新进度条的值。这样,用户就可以看到文件复制的进度。 综上所述,结合FileHelper进行文件读写,利用Frame框架构建用户界面,以及在复制操作中添加...
实现进度条通常需要计算已处理文件的百分比,并将其转化为可视化界面元素。例如,在Python的Turtle库或wxPython等图形用户界面库中,可以创建进度条控件。 4. **多线程技术**:在读取大文件时,为了不影响用户的...