首页 > 开发 > Java > 正文

Java Swing JProgressBar进度条的实现示例

2020-07-28 13:49:08
字体:
来源:转载
供稿:网友

1. 概述

官方JavaDocsApi: javax.swing.JProgressBar

JProgressBar,进度条。

以可视化形式显示某些任务进度的组件。

进度条中心可显示进度百分比的文本表示形式。

当一个任务的进度长度未知时,可将进度条设置为不确定模式。不确定模式的进度条持续地显示动画来表示正进行的操作。当

可以确定任务长度和进度量时,则可设置进度条的最大最小值,以及更新进度条的进度值,将其切换回确定模式。

JProgressBar 常用构造方法:

/** * 构造方法中的参数含义: *   orient: 进度条的方向,SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL,默认为水平方向 *   min: 最小进度值 *   max: 最大进度值 */JProgressBar()JProgressBar(int orient)JProgressBar(int min, int max)JProgressBar(int orient, int min, int max)

JProgressBar 常用方法:

// 设置 最小进度值、最大进度值、当前进度值void setMinimum(int min)void setMaximum(int max)void setValue(int n)// 获取当前进度值int getValue()// 获取当前进度的百分比double getPercentComplete()// 是否绘制百分比文本(进度条中间显示的百分数)void setStringPainted(boolean b)// 设置进度条进度是否为不确定模式void setIndeterminate(boolean newValue)// 设置进度条的方向,SwingConstants.VERTICAL 或 SwingConstants.HORIZONTALvoid setOrientation(int newOrientation)// 添加进度条的进度改变监听器void addChangeListener(ChangeListener l)

2. 代码实例

package com.xiets.swing;import javax.swing.*;import javax.swing.event.ChangeEvent;import javax.swing.event.ChangeListener;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class Main {  private static final int MIN_PROGRESS = 0;  private static final int MAX_PROGRESS = 100;  private static int currentProgress = MIN_PROGRESS;  public static void main(String[] args) {    JFrame jf = new JFrame("测试窗口");    jf.setSize(250, 250);    jf.setLocationRelativeTo(null);    jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);    JPanel panel = new JPanel();    // 创建一个进度条    final JProgressBar progressBar = new JProgressBar();    // 设置进度的 最小值 和 最大值    progressBar.setMinimum(MIN_PROGRESS);    progressBar.setMaximum(MAX_PROGRESS);    // 设置当前进度值    progressBar.setValue(currentProgress);    // 绘制百分比文本(进度条中间显示的百分数)    progressBar.setStringPainted(true);    // 添加进度改变通知    progressBar.addChangeListener(new ChangeListener() {      @Override      public void stateChanged(ChangeEvent e) {        System.out.println("当前进度值: " + progressBar.getValue() + "; " +            "进度百分比: " + progressBar.getPercentComplete());      }    });    // 添加到内容面板    panel.add(progressBar);    jf.setContentPane(panel);    jf.setVisible(true);    // 模拟延时操作进度, 每隔 0.5 秒更新进度    new Timer(500, new ActionListener() {      @Override      public void actionPerformed(ActionEvent e) {        currentProgress++;        if (currentProgress > MAX_PROGRESS) {          currentProgress = MIN_PROGRESS;        }        progressBar.setValue(currentProgress);      }    }).start();  }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表