**进度条(JProgressBar)**是一种以可视化形式显示某些任务进度的组件。

JProgressBar 类实现了一个用于为长时间的操作提供可视化指示器的 GUI 进度条。在任务的完成进度中,进度条显示该任务完成的百分比。此百分比通常由一个矩形以可视化形式表示,该矩形开始是空的,随着任务的完成逐渐被填充。此外,进度条可显示此百分比的文本表示形式。

JProgressBar 类的常用构造方法和 JSlider 类的常用构造方法一样,这里不再重复。如下示例代码演示了如何创建一个 JProgressBar 类实例。
//

创建一个最小值是0,最大值是100的进度条
JProgressBar pgbar=new JProgressBar(0,100);
//创建一个最小值是0,最大值是60,当前值是20的进度条
JProgressBar pgbar=new JProgressBar(0,60,20);

JProgressBar 类的常用方法:

  • getMaximum() ----返回进度条的最大值
  • getMinimum()---- 返回进度条的最小值
  • getPercentComplete()---- 返回进度条的完成百分比
  • getString()---- 返回当前进度的 String 表示形式
  • getValue() ----返回进度条的当前 value
  • setBorderPainted(boolean b) ----设置 borderPainted 属性,如果进度条应该绘制其边框,则此属性为true
  • setIndeterminate(boolean newValue) ----设置进度条的 indeterminate属性,该属性确定进度条处于确定模式中还 是处于不确定模式中
  • setMaximum(int n)---- 将进度条的最大值设置为 n
  • setMinimum(int n) ----将进度条的最小值设置为 n
  • setOrientation(int newOrientation) ----将进度条的方向设置为 newOrientation
  • setString(String s) ----设置进度字符串的值
  • setStringPainted(boolean b)----- 设置 stringPainted 属性的值,该属性确定进度条是否应该呈现进度字符串
  • setValue(int n) ----将进度条的当前值设置为 n
  • updateUI() ----将 UI 属性重置为当前外观对应的值

其中,
setOrientation() 方法的参数值必须为 SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL。JProgressBar 使用 BoundedRangeModel 作为其数据模型,以 value 属性表示该任务的“当前”状态,minimum 和 maximum 属性分别表示开始点和结束点。

技巧:如果要执行一个未知长度的任务,可以调用 setlndeterminate(true) 将进度条设置为不确定模式。不确定模式的进度条将持续地显示动画来表示正进行的操作。一旦可以确定任务长度和进度量,则应该更新进度条的值,将其切换到确定模式。

例 1
使用 JProgressBar 类创建一个进度条模拟程序升级过程,实现过程如下。

(1) 创建一个继承自 JFrame 的 JProgressBarDemo 类。

(2) 在构造方法中添加一个空的进度条,然后设置它的显示属性。主要代码如下:

import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
public class JProgressBarDemo extends JFrame
{//static JProgressBarDemo frame;public JProgressBarDemo(){setTitle("使用进度条");JLabel label=new JLabel("欢迎使用在线升级功能!");//创建一个进度条JProgressBar progressBar=new JProgressBar();JButton button=new JButton("完成");button.setEnabled(false);Container container=getContentPane();//获取当前窗口的内容窗格container.setLayout(new GridLayout(3,1));//创建一个3行和1列的网格布局JPanel panel1=new JPanel(new FlowLayout(FlowLayout.LEFT));JPanel panel2=new JPanel(new FlowLayout(FlowLayout.CENTER));JPanel panel3=new JPanel(new FlowLayout(FlowLayout.RIGHT));panel1.add(label);    //添加标签panel2.add(progressBar);    //添加进度条panel3.add(button);    //添加按钮container.add(panel1);container.add(panel2);container.add(panel3);progressBar.setStringPainted(true);//进度条是否显示字符串//如果不需要进度上显示“升级进行中...”,可注释此行progressBar.setString("升级进行中...");//设置进度字符串的值//如果需要使用不确定模式,可使用此行//progressBar.setIndeterminate(true);//开启一个线程处理进度new Progress(progressBar, button).start();//单机“完成”按钮结束程序button.addActionListener(new ActionListener(){@Overridepublic void actionPerformed(ActionEvent e){dispose();System.exit(0);}});}/*** @param args*/public static void main(String[] args){// TODO Auto-generated method stubJProgressBarDemo frame=new JProgressBarDemo();//frame.setBounds(300,200,300,150);    //设置容器的大小frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.pack();}
}

(3) 创建 Progress 线程并实现对进度条进度的控制,实现代码如下。

private class Progress extends Thread
{JProgressBar progressBar;JButton button;//进度条上的数字int[] progressValues={6,18,27,39,51,66,81,100};Progress(JProgressBar progressBar,JButton button){this.progressBar=progressBar;this.button=button;}public void run(){for(int i=0;i<progressValues.length;i++){try{Thread.sleep(3000);}catch(InterruptedException e){e.printStackTrace();}//设置进度条的值progressBar.setValue(progressValues[i]);}progressBar.setIndeterminate(false);progressBar.setString("升级完成!");button.setEnabled(true);}
}

上述代码定义了一个进度条的进度数组 progressValues。线程每隔 1000 毫秒从数组中取一个数字作为当前进度,并使用 JProgressBar 类的 setValue() 方法更新到进度条。最后使进度条显示“升级完成!”字符串,并使“完成”按钮可用。

图 1 为程序的运行效果。图 2 为调用 Setlndeterminate(true) 方法后进度条使用不确定模式的运行效果。图 3 为默认的数字进度条运行效果。

16、Java Swing JProgressBar:进度条组件相关推荐

  1. 博为峰Java技术文章 ——JavaSE Swing 如何使用进度条组件JProgressBarⅡ

    2019独角兽企业重金招聘Python工程师标准>>> 博为峰小博老师: 使用构造器JProgressBar(int orient)来创建进度条.其具体的实例代码如下: public ...

  2. 微信小程序 MinUI 组件库系列之 progress 进度条组件

    MinUI 是基于微信小程序自定义组件特性开发而成的一套简洁.易用.高效的组件库,适用场景广,覆盖小程序原生框架.各种小程序组件主流框架等,并且提供了高效的命令行工具.MinUI 组件库包含了很多基础 ...

  3. vue 视频 时间进度条组件

    vue 视频 时间进度条组件 有些视频是以视频流的形式进行渲染的,没有视频滚动条,所以就写了24h的时间组件 实现思路: 1,24h的时间刻度线总宽度为12960px 2,点击24h线的某一点,获取这 ...

  4. vue 新手指引_精通react/vue组件设计之快速实现一个可定制的进度条组件

    前言 这篇文章是笔者写组件设计的第四篇文章,之所以会写组件设计相关的文章,是因为作为一名前端优秀的前端工程师,面对各种繁琐而重复的工作,我们不应该按部就班的去"辛勤劳动",而是要根 ...

  5. 基于Vue的事件响应式进度条组件

    写在前面 找了很多vue进度条组件,都不包含拖拽和点击事件,input range倒是原生包含input和change事件,但是直接基于input range做进度条的话,样式部分需要做大量调整和兼容 ...

  6. 手把手教你实现一个 Vue 进度条组件!

    最近在个人的项目中,想对页面之间跳转的过程进行优化,想到了很多文档或 npm 等都用到的页面跳转进度条,于是便想自己去实现一个,特此记录. 来看下 npm 搜索组件时候的效果: so 下面咱们一起动手 ...

  7. 数字进度条组件NumberProgressBar

     数字进度条组件NumberProgressBar NumberProgressBar是一款数字进度条组件.它不仅可以通过进度条的变化展现进度,还可以通过跟随文字精确表示进度值.开发者可以对进度条进行 ...

  8. 【Android 应用开发】 自定义 圆形进度条 组件

    转载著名出处 : http://blog.csdn.net/shulianghan/article/details/40351487 代码下载 : -- CSDN 下载地址 : http://down ...

  9. vue实现竖式步骤条_手把手教你实现一个 Vue 进度条组件!

    最近在个人的项目中,想对页面之间跳转的过程进行优化,想到了很多文档或 npm 等都用到的页面跳转进度条,于是便想自己去实现一个,特此记录. 来看下 npm 搜索组件时候的效果: so 下面咱们一起动手 ...

  10. Vue2.0+SVG实现音乐播放圆形进度条组件,传入实时百分比实现圆圈进度动画效果

    vue2.0+SVG实现音乐播放圆形进度条组件,传入实时百分比实现圆圈进度动画效果 需求分析: 类似于大多数音乐播放器中等mini播放器控制按钮,显示播放进度,实时更新进度. progress-cir ...

最新文章

  1. mysql的锁定机制_MySQL锁定机制
  2. Castle Active Record for .NET2.0快速入门示例
  3. Planning Strategy 和Requirement type的思考
  4. Linux 实操———CentOS 6 安装配置 Oracle JDK 1.8
  5. 我要重构“软件行业”......
  6. 全国计算机二级等级考试项目有什么,全国计算机等级考试二级内容
  7. 华为交换机重制_华为交换机重置命令
  8. svn 图标不显示 window10
  9. SPSS入门笔记记录
  10. 百度云网盘一直显示“下载请求中”,一个 解决办法
  11. Matlab学习报告 20-12-08
  12. LeetCode刷题-190709-扩展:阿拉伯数字和中文数字转换
  13. HR-Saas(二):登录模块
  14. 常用mysql数据库工具简介
  15. 单片机课程学习与感想
  16. yocto 基本概念
  17. 多边形的扫描转换算法——扫描线算法(计算机图形学)
  18. 团宝网股权太分散融资难加夫妻店管理诟病
  19. socket---proto_ops---inetsw_array等基本结构
  20. 步进电机细分驱动个人理解

热门文章

  1. NLP之NBGBT:基于朴素贝叶斯(count/tfidf+网格搜索+4fCrva)、梯度提升树(w2c+网格搜索+4fCrva)算法对IMDB影评数据集进行文本情感分析(情感二分类预测)
  2. CV之FR:计算机视觉之人脸识别(Face Recognition)方向的简介、使用方法、案例应用之详细攻略
  3. Sql:成功解决将sql输出的datetime时间格式转为常规格式
  4. 数据科学-通过数据探索了解我们的特征
  5. 数据标准化的方法与意义
  6. PyCharm使用指南及更改Python pip源为国内豆瓣
  7. 初识java-循环结构(二):6
  8. AngularJS依赖注入
  9. 【网络流】 HDU 4183 Pahom on Water 拆点
  10. 操作系统习题6—存储管理2