Swing高级JProgressBarTest进度条

来源:互联网 发布:国税数据质量整改 编辑:程序博客网 时间:2024/06/05 17:41

http://www.cnblogs.com/maxblog/archive/2010/09/22/1833159.html

package test;
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);  //按钮可用
    }
}
0 0
原创粉丝点击