Java Swing JProgressBar進度條的實現示例
阿新 • • 發佈:2020-01-07
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(); } }
結果展示:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。