java文件进度条(java进度条为什么不动)
华为云服务器特价优惠火热进行中! 2核2G2兆仅需 38 元;4核4G3兆仅需 79 元。购买时间越长越优惠!更多配置及优惠价格请咨询客服。
合作流程: |
今天给各位分享java文件进度条的知识,其中也会对java进度条为什么不动进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
微信号:cloud7591如需了解更多,欢迎添加客服微信咨询。
复制微信号
本文目录一览:
怎样在Java实例开发的过程中使用进度条
在读取大型文件或者其它大批量数据输入操作时 希望能够通过一个进度条显示当前的进度 现在在Java中非常容易实现 仅仅需要几行代码即可 Java的swing包提供了ProgressMonitorInputStream类 该类提供了自动地弹出进度窗口和事件处理机制 使用这个类也非常方便 只需要把任何一个InputStream作为参数 构造一个新的ProgressMonitorInputStream类 其它不需要任何额外的代码 即可实现进度窗口的自动生成 ProgressMonitorInputStream类可以和其它InputStream一样使用 ProgressMonitorInputStream类继承层次 [pre]java lang Object|+ java io InputStream|+ java io FilterInputStream|+ javax swing ProgressMonitorInputStream[/pre] 构造方法 ProgressMonitorInputStream(Component parentComponent Object message InputStream in)parentComponent 触发被监视操作的组件message (如果弹出进度显示窗口) 显示在进度显示窗口中的指示信息in 需要监视的输入流 操作方法 除了在InputStream和FilterInputStream中继承的方法外 还增加了如下方法 ProgressMonitor getProgressMonitor()//得到当前对象使用的ProgressMonitor对象 int read()int read(byte[] b)int read(byte[] b int off int len)void reset()long skip(long n)//上面几个方法都是覆盖了FilterInputStream中的方法 因为需要更新进度指示 void close()//因为需要关闭进度监视对象和窗口 所以覆盖了FilterInputStream父类中的close方法 示例代码: import java awt FlowLayout;import java awt event ActionEvent;import java awt event ActionListener;import java io FileInputStream;import java io InputStream;import javax swing JButton;import javax swing JFrame;import javax swing ProgressMonitorInputStream;public class ProgressMonitorTest{public static void main(String[] args){// 创建一个包含 Click me 的窗口final JFrame f =new JFrame( ProgressMonitor Sample );f getContentPane() setLayout(new FlowLayout());JButton b = new JButton( Click me );f getContentPane() add(b);f pack();// 设置按钮的动作事件b addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){// 这儿使用了新的线程处理按钮的动作事件 因为我们需要//主窗口的线程响应用户 这样你可以多次点击该按钮 //会启动多个读取文件的线程 主窗口也保持响应 new Thread(){public void run(){try {// 打开文件输出流 把InputStream包装在ProgressMonitorInputStream中 //在当前目录中需要放置一个大文件 建议超过 MInputStream in = new FileInputStream( bigfile dat );ProgressMonitorInputStream pm =new ProgressMonitorInputStream(f Reading a big file in);// 读取文件 如果总耗时超过 秒 将会自动弹出一个进度监视窗口 // 显示已读取的百分比 int c;while((c=pm read()) != ){// 处理代码}pm close();}catch(Exception ex){ex printStackTrace();}}} start();}});// 设置缺省的窗口关闭行为 并显示窗口 f setDefaultCloseOperation(JFrame EXIT_ON_CLOSE);f setVisible(true);}} lishixinzhi/Article/program/Java/hx/201311/25629

Java中如何实现进度条效果
import java.awt.Color; import java.awt.Toolkit; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JProgressBar; import javax.swing.JWindow; @SuppressWarnings("serial") public class Demo extends JWindow implements Runnable { // 定义加载窗口大小 public static final int LOAD_WIDTH = 455; public static final int LOAD_HEIGHT = 295; // 获取屏幕窗口大小 public static final int WIDTH = Toolkit.getDefaultToolkit().getScreenSize().width; public static final int HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().height; // 定义进度条组件 public JProgressBar progressbar; // 定义标签组件 public JLabel label; // 构造函数 public Demo() { // 创建标签,并在标签上放置一张图片 label = new JLabel(new ImageIcon("images/background.jpg")); label.setBounds(0, 0, LOAD_WIDTH, LOAD_HEIGHT - 15); // 创建进度条 progressbar = new JProgressBar(); // 显示当前进度值信息 progressbar.setStringPainted(true); // 设置进度条边框不显示 progressbar.setBorderPainted(false); // 设置进度条的前景色 progressbar.setForeground(new Color(0, 210, 40)); // 设置进度条的背景色 progressbar.setBackground(new Color(188, 190, 194)); progressbar.setBounds(0, LOAD_HEIGHT - 15, LOAD_WIDTH, 15); // 添加组件 this.add(label); this.add(progressbar); // 设置布局为空 this.setLayout(null); // 设置窗口初始位置 this.setLocation((WIDTH - LOAD_WIDTH) / 2, (HEIGHT - LOAD_HEIGHT) / 2); // 设置窗口大小 this.setSize(LOAD_WIDTH, LOAD_HEIGHT); // 设置窗口显示 this.setVisible(true); } public static void main(String[] args) { Demo t = new Demo(); new Thread(t).start(); } @Override public void run() { for (int i = 0; i 100; i++) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } progressbar.setValue(i); } JOptionPane.showMessageDialog(this, "加载完成"); this.dispose(); } }
用 java 怎么做进度条?
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
public class MyProgressBar extends Canvas {
private float scaleSize;
private float currentValue;
public MyProgressBar() {
this(100, 50);
}
public MyProgressBar(float scaleSize, float currentValue) {
this.scaleSize = scaleSize;
this.currentValue = currentValue;
this.setBackground(Color.lightGray);
this.setForeground(Color.magenta);
setSize(150, 25);
}
public float getCurrentValue() {
return currentValue;
}
public void setCurrentValue(float currentValue) {
this.currentValue = Math.max(0, currentValue);
if (this.scaleSize this.currentValue) {
this.currentValue = this.scaleSize;
}
}
public float getScaleSize() {
return scaleSize;
}
public void setScaleSize(float scaleSize) {
this.scaleSize = Math.max(1.0f, scaleSize);
if (this.scaleSize this.currentValue) {
this.scaleSize = this.currentValue;
}
}
public synchronized void paint(Graphics g) {
int w = getSize().width;
int h = getSize().height;
g.setColor(getBackground());
g.fillRect(1, 1, w - 2, h - 2);
g.fill3DRect(0, 0, w - 1, h - 1, true);
g.setColor(getForeground());
g.fillRect(3, 3, (int) (currentValue * (w - 6) / scaleSize), h - 6);
}
}
下面是程序执行入口点:
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class TestMyProgressBar extends JFrame implements Runnable,
ActionListener {
private MyProgressBar bar;
private JButton btnStart;
static TestMyProgressBar tmpb;
public TestMyProgressBar() {
setSize(400, 300);
setLocation(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("演示自定义进度条");
setLayout(new FlowLayout());
btnStart = new JButton("开始");
this.add(btnStart);
btnStart.addActionListener(this);
bar = new MyProgressBar();
setVisible(true);
}
public static void main(String[] args) {
tmpb = new TestMyProgressBar();
}
@Override
public void run() {
for (int i = 1; i = 20; i++) {
int x = i * 5;
bar.setCurrentValue(x);
if (x 0 x 100) {
btnStart.setEnabled(false);
}
if (x == 100) {
btnStart.setEnabled(true);
}
try {
Thread.sleep(200);
add(bar);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("开始")) {
Thread t = new Thread(tmpb);
t.start();
}
}
}
java多文件上传显示进度条
使用 apache fileupload ,spring MVC jquery1.6x , bootstrap 实现一个带进度条的多文件上传,由于fileupload 的局限,暂不能实现每个上传文件都显示进度条,只能实现一个总的进度条,效果如图:
1、jsp 页面
!DOCTYPE html
%@ page contentType="text/html;charset=UTF-8"%
%@ taglib prefix="c" uri="" %
html xmlns=""
head
meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /
script src="../js/jquery-1.6.4.js" type="text/javascript"/script
link rel="stylesheet" type="text/css" href="../css/bootstrap.css"/
/head
body
form id='fForm' class="form-actions form-horizontal" action="../upload.html"
encType="multipart/form-data" target="uploadf" method="post"
div class="control-group"
label class="control-label"上传文件:/label
div class="controls"
input type="file" name="file" style="width:550"
/div
div class="controls"
input type="file" name="file" style="width:550"
/div
div class="controls"
input type="file" name="file" style="width:550"
/div
label class="control-label"上传进度:/label
div class="controls"
div class="progress progress-success progress-striped" style="width:50%"
div id = 'proBar' class="bar" style="width: 0%"/div
/div
/div
/div
div class="control-group"
div class="controls"
button type="button" id="subbut" class="btn"submit/button
/div
/div
/form
iframe name="uploadf" style="display:none"/iframe
/body
/html
script
$(document).ready(function(){
$('#subbut').bind('click',
function(){
$('#fForm').submit();
var eventFun = function(){
$.ajax({
type: 'GET',
url: '../process.json',
data: {},
dataType: 'json',
success : function(data){
$('#proBar').css('width',data.rate+''+'%');
$('#proBar').empty();
$('#proBar').append(data.show);
if(data.rate == 100){
window.clearInterval(intId);
}
}});};
var intId = window.setInterval(eventFun,500);
});
});
/script
2、java 代码
package com.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.ProgressListener;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class FileUploadController {
Logger log = Logger.getLogger(FileUploadController.class);
/**
* upload 上传文件
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value = "/upload.html", method = RequestMethod.POST)
public ModelAndView upload(HttpServletRequest request,
HttpServletResponse response) throws Exception {
final HttpSession hs = request.getSession();
ModelAndView mv = new ModelAndView();
boolean isMultipart = ServletFileUpload.isMultipartContent(request);
if(!isMultipart){
return mv;
}
// Create a factory for disk-based file items
FileItemFactory factory = new DiskFileItemFactory();
// Create a new file upload handler
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setProgressListener(new ProgressListener(){
public void update(long pBytesRead, long pContentLength, int pItems) {
ProcessInfo pri = new ProcessInfo();
pri.itemNum = pItems;
pri.readSize = pBytesRead;
pri.totalSize = pContentLength;
pri.show = pBytesRead+"/"+pContentLength+" byte";
pri.rate = Math.round(new Float(pBytesRead) / new Float(pContentLength)*100);
hs.setAttribute("proInfo", pri);
}
});
List items = upload.parseRequest(request);
// Parse the request
// Process the uploaded items
// Iterator iter = items.iterator();
// while (iter.hasNext()) {
// FileItem item = (FileItem) iter.next();
// if (item.isFormField()) {
// String name = item.getFieldName();
// String value = item.getString();
// System.out.println("this is common feild!"+name+"="+value);
// } else {
// System.out.println("this is file feild!");
// String fieldName = item.getFieldName();
// String fileName = item.getName();
// String contentType = item.getContentType();
// boolean isInMemory = item.isInMemory();
// long sizeInBytes = item.getSize();
// File uploadedFile = new File("c://"+fileName);
// item.write(uploadedFile);
// }
// }
return mv;
}
/**
* process 获取进度
* @param request
* @param response
* @return
* @throws Exception
*/
@RequestMapping(value = "/process.json", method = RequestMethod.GET)
@ResponseBody
public Object process(HttpServletRequest request,
HttpServletResponse response) throws Exception {
return ( ProcessInfo)request.getSession().getAttribute("proInfo");
}
class ProcessInfo{
public long totalSize = 1;
public long readSize = 0;
public String show = "";
public int itemNum = 0;
public int rate = 0;
}
}
java文件进度条的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java进度条为什么不动、java文件进度条的信息别忘了在本站进行查找喔。
