1. 程式人生 > 程式設計 >Java Swing JProgressBar進度條的實現示例

Java Swing JProgressBar進度條的實現示例

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.HORIZONTAL
void 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();
  }

}

結果展示:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。