http://www.cnblogs.com/maxblog/archive/2010/09/22/1833159.html
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class JProgressBarTest extends JFrame{
/**
*
*/
private static final long serialVersionUID = 1L;
public JProgressBarTest() {
super();
this.setTitle("到出数据");
this.setBounds(100,100,550,350);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel pnBasic = new JPanel();
final JButton button = new JButton("到出数据");
button.setBounds(100,10,100,100);
pnBasic.add(button);
final JTextArea textArea = new JTextArea();
textArea.setEditable(false);
JScrollPane scrollPane = new JScrollPane(textArea);
scrollPane.setBorder(BorderFactory.createTitledBorder("导出信息显示"));
scrollPane.setPreferredSize(new Dimension(0, 120));
scrollPane.setSize(new Dimension(400,200));
this.add(scrollPane,BorderLayout.CENTER);
final JProgressBar progressBar = new JProgressBar();
progressBar.setMinimum(0);
progressBar.setMaximum(50);
progressBar.setStringPainted(true); //显示提示信息
progressBar.setIndeterminate(false); //确定进度的进度条
pnBasic.setLayout(new FlowLayout(2,10,10));
pnBasic.add(button); //布局处理
this.add(pnBasic,BorderLayout.NORTH);
this.add(progressBar,BorderLayout.SOUTH);
button.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
button.setEnabled(false); //初始化时不可用
Progress pg=new Progress(progressBar,button,textArea,50);
pg.start();
}
});
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
JProgressBarTest jProgressBarTest = new JProgressBarTest();
jProgressBarTest.setVisible(true);
}
}
class Progress extends Thread{
private int progressValue = 100;
private JProgressBar progressBar;
private JButton button;
private JTextArea textArea;
public Progress(JProgressBar progressBar,JButton button,JTextArea textArea,int progressValue )
{
this.progressBar = progressBar;
this.button =button;
this.progressValue=progressValue;
this.textArea=textArea;
}
public void run()
{
for(int i=0;i<=progressValue;i++)
{
try
{
Thread.sleep(100);
}catch(Exception e)
{
e.printStackTrace();
}
progressBar.setValue(i); //进度值
progressBar.setString("导出"+i+"/"+progressValue+"文件"); //提示信息
textArea.append(progressBar.getString() + "\n");
}
progressBar.setIndeterminate(false); //采用确定的进度条
//progressBar.setIndeterminate(true); //不确定进度的进度条
progressBar.setString("导出完成."); //提示信息
button.setEnabled(true); //按钮可用
}
}