Java实现进度条

基于有人问到怎样做进度条,下面给个简单的做法:

主要是使用JProgressBar(Swing内置javax.swing.JProgressBar)和SwingWorker(Swing内置javax.swing.SwingWorker)

package org.ubird;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.ExecutionException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;

public class TestSwingWorker extends SwingWorker,String>{

	private JLabel status;
	private JPanel viewer;
	private String[] imagesName;
	private JProgressBar jpb;
	
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable(){
			public void run() {
				TestFrame frame = new TestFrame();
				final JPanel panel = new JPanel();
				final JLabel label = new JLabel();
				
				final String[] imagesName = new String[38];
				for(int i=0; i doInBackground() throws Exception {
		List image = new ArrayList();
		for(int i=0; i chunks) {
		status.setText(chunks.get(chunks.size()-1));
		int x = Integer.parseInt(chunks.get(chunks.size()-1).substring(chunks.get(chunks.size()-1).indexOf("(")+1,chunks.get(chunks.size()-1).indexOf(")")).trim());
		jpb.setValue(x);
		
		for(String str : chunks){
			System.out.println(str);
		}
	}

	@Override
	protected void done() {
		try {
			for(Image image : get()){
				JLabel label = new JLabel(new ImageIcon(image));
				label.setSize(160, 120);
				label.setPreferredSize(new Dimension(160,120));
				viewer.add(label);
			}
		} catch (InterruptedException e) {
			e.printStackTrace();
		} catch (ExecutionException e) {
			e.printStackTrace();
		}
	}
	
	
}

package org.ubird;

import javax.swing.JFrame;

public class TestFrame extends JFrame {


	public TestFrame(){
		setTitle("Test Frame");
		setSize(800,600);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
}

该程序的可运行源码、资源图片的下载地址:http://download.csdn.net/source/3245370

NOTE:解压后双击里面的:CompileAndRun.bat可在Win下直接运行


你可能感兴趣的:(java,swing)