Java JProgressBar类(进度条)

简介

利用JProgressBar类可以实现一个进度条。它一般是一种颜色部分或完全填充的矩形。缺省情况下,进度条配备了一个凹陷的边框,并水平放置。 进度条还可以选择显示一个字符串,这个字符串在进度条矩形的中央位置上显示。这个字符串缺省时为耗时任务已完成的百分比。这个字符串可用JProgressBar.setString方法定制。 

进度条是一个矩形组件,通过填充它的部分或全部来指示一个任务的执行情况。默认情况下为确定任务执行进度的进度条效果如图23.48所示,填充区域会逐渐增大;如果并不确定任务的执行进度,可以通过调用方法setIndeterminate(boolean b)设置进度条的样式,设为true表示不确定任务的执行进度,填充区域会来回滚动,效果如图23.49所示;设为false则表示确定任务的执行进度。

构造方法

JProgressBar() :创建一个显示边框但不带进度字符串的水平进度条。 
JProgressBar(BoundedRangeModel newModel) :创建使用指定的保存进度条数据模型的水平进度条。 
JProgressBar(int orient) :创建具有指定方向(JProgressBar.VERTICAL 或 JProgressBar.HORIZONTAL)的进度条。 
JProgressBar(int min, int max) :创建具有指定最小值和最大值的水平进度条。 
JProgressBar(int orient, int min, int max) :创建使用指定方向、最小值和最大值的进度条。 

常用方法 

addChangeListener(ChangeListener l) 
          将指定的 ChangeListener 添加到进度条。 
getMaximum() 
          返回进度条的最大值,该值存储在进度条的 BoundedRangeModel 中。 
getMinimum() 
          返回进度条的最小值,该值存储在进度条的 BoundedRangeModel 中。 
getModel() 
          返回此进度条使用的数据模型。 
getString() 
          返回进度字符串的当前值。 
getValue() 
          返回进度条的当前值,该值存储在进度条的 BoundedRangeModel 中。 
setBorderPainted(boolean b) 
          设置 borderPainted 属性,如果进度条应该绘制其边框,则此属性为 true。 
setMaximum(int n) 
          将进度条的最大值(存储在进度条的数据模型中)设置为 n。 
setMinimum(int n) 
          将进度条的最小值(存储在进度条的数据模型中)设置为 n。 
setModel(BoundedRangeModel newModel) 
          设置 JProgressBar 使用的数据模型。 
setString(String s) 
          设置进度字符串的值。 
setValue(int n) 
          将进度条的当前值(存储在进度条的数据模型中)设置为 n。 
setUI(ProgressBarUI ui) 
          设置呈现此组件的外观对象。 

import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;

import javax.swing.*;
import javax.swing.filechooser.*;
import javax.swing.filechooser.FileFilter;

public class t3 extends JFrame{
	
	private JProgressBar progressBar = new JProgressBar();
	private JButton button = new JButton("升级");
	private JLabel label = new JLabel();
	
	private Box box = Box.createVerticalBox();
	private Box box1 = Box.createHorizontalBox();
	private Box box2 = Box.createHorizontalBox();
	private Box box3 = Box.createHorizontalBox();
	
	public t3() {
		setTitle("选项卡面板");
		setBounds(400, 400, 400, 400);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		label.setText("系统升级");
		label.setLocation(SwingConstants.CENTER, getDefaultCloseOperation());
		
		progressBar.setIndeterminate(true);//设置进度条的样式为不确定的进度条样式(进度条来回滚动),false为确定的进度条样式(即进度条从头到尾显示)
		progressBar.setStringPainted(true);//设置进度条显示提示信息
		progressBar.setString("系统正在升级");//设置提示信息
		
		//给按钮添加事件监听器,点击按钮开始升级
		button.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				// TODO Auto-generated method stub
				new Progress(progressBar, button).start();// 利用线程模拟一个在线升级任务
			}
		});
		
		box1.add(label);
		box2.add(progressBar);
		box3.add(button);
		box.add(box1);
		box.add(box2);
		box.add(box3);
		add(box);
		setVisible(true);
	}
	
	class Progress extends Thread{
		
		private int[] num = {1,10,20,30,40,50,60,70,80,90,100};
		private JProgressBar bar;
		private JButton button;
		
		public Progress(JProgressBar progressBar, JButton button) {
			this.bar = progressBar;
			this.button = button;
		}
		
		public void run() {
			bar.setStringPainted(true);
			bar.setIndeterminate(false);//采用确定的进度条样式
		
			for(int i = 0; i < num.length; i++) {
				
				try {
					bar.setValue(num[i]);
					Thread.sleep(100);
					
				}catch(Exception e) {
					e.printStackTrace();
				}
			}
			
			bar.setString("系统升级结束");
			//给按钮添加事件监听器,升级结束后退出系统
			button.setText("升级结束");
			button.addActionListener(new ActionListener() {
				
				@Override
				public void actionPerformed(ActionEvent e) {
					// TODO Auto-generated method stub
					System.exit(0);
				}
			});
			
		}
		
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		t3 test = new t3();

	}

}


猜你喜欢

转载自blog.csdn.net/qq_36761831/article/details/81490380
今日推荐