Swing - JProgressBar 类
简介
JProgressBar 类是一个可视化显示某些任务进度的组件。
类声明
以下是 javax.swing.JProgressBar 类的声明 −
public class JProgressBar
extends JComponent
implements SwingConstants, Accessible
字段
以下是 javax.swing.JProgressBar 类的字段 −
protected ChangeEvent changeEvent − 每个实例只需要一个 ChangeEvent,因为事件唯一有趣的属性是不可变源,即进度条。
protected ChangeListener changeListener − 侦听进度条模型发送的更改事件,将它们重新调度到在此进度条上注册的更改事件侦听器。
protected BoundedRangeModel model − 保存进度条数据的对象。
protected int orientation − 进度条是水平的还是垂直的。
protected boolean paintBorder − 是否在进度条周围显示边框。
protected boolean paintString − 是否在进度条上显示一串文本。
protected String progressString − 可以显示在进度条上的可选字符串。
类构造函数
| 序号 | 构造函数 & 描述 |
|---|---|
| 1 |
JProgressBar() 创建一个显示边框但没有进度字符串的水平进度条。 |
| 2 |
JProgressBar(BoundedRangeModel newModel) 创建一个使用指定模型保存进度条数据的水平进度条。 |
| 3 |
JProgressBar(int orient) 创建具有指定方向的进度条,可以是 SwingConstants。 VERTICAL 或 SwingConstants.HORIZONTAL。 |
| 4 |
JProgressBar(int min, int max) 创建具有指定最小值和最大值的水平进度条。 |
| 5 |
JProgressBar(int orient, int min, int max) 使用指定的方向、最小值和最大值创建进度条。 |
类方法
| 序号 | 方法 & 描述 |
|---|---|
| 1 |
void addChangeListener(ChangeListener l) 将指定的 ChangeListener 添加到进度条。 |
| 2 |
protected ChangeListener createChangeListener() 想要以不同方式处理来自模型的更改事件的子类可以覆盖它以返回自定义 ChangeListener 实现的实例。 |
| 3 |
protected void fireStateChanged() 向所有已注册对 ChangeEvents 感兴趣的 ChangeListener 发送一个源为 JProgressBar 的 ChangeEvent。 |
| 4 |
AccessibleContext getAccessibleContext() 获取与此 JProgressBar 关联的 AccessibleContext。 |
| 5 |
ChangeListener[] getChangeListeners() 返回使用 addChangeListener 添加到此进度条的所有 ChangeListener 的数组。 |
| 6 |
int getMaximum() 从 BoundedRangeModel 返回进度条的最大值。 |
| 7 |
int getMinimum() 从 BoundedRangeModel 返回进度条的最小值。 |
| 8 |
BoundedRangeModel getModel() 返回此进度条使用的数据模型。 |
| 9 |
int getOrientation() 根据进度条的方向,返回 SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL。 |
| 10 |
double getPercentComplete() 返回进度条的完成百分比。 |
| 11 |
String getString() 返回当前进度的字符串表示形式。 |
| 12 |
ProgressBarUI getUI() 返回呈现此组件的外观对象。 |
| 13 |
String getUIClassID() 返回呈现此组件的外观类的名称。 |
| 14 |
int getValue() 从 BoundedRangeModel 返回进度条的当前值。 |
| 15 |
boolean isBorderPainted() 返回 borderPainted 属性。 |
| 16 |
boolean isIndeterminate() 返回 indeterminate 属性的值。 |
| 17 |
boolean isStringPainted() 返回 stringPainted 属性的值。 |
| 18 |
protected void paintBorder(Graphics g) 如果 borderPainted 属性为true,则绘制进度条的边框。 |
| 19 |
protected String paramString() 返回此 JProgressBar 的字符串表示形式。 |
| 20 |
void removeChangeListener(ChangeListener l) 从进度条中移除一个 ChangeListener。 |
| 21 |
void setBorderPainted(boolean b) 设置 borderPainted 属性,如果进度条应该绘制其边框,则该属性为true。 |
| 22 |
void setIndeterminate(boolean newValue) 设置进度条的 indeterminate 属性,该属性决定进度条是处于determinate 还是 indeterminate 模式。 |
| 23 |
void setMaximum(int n) 将进度条的最大值(存储在进度条的数据模型中)设置为 n。 |
| 24 |
void setMinimum(int n) 将进度条的最小值(存储在进度条的数据模型中)设置为 n。 |
| 25 |
void setModel(BoundedRangeModel newModel) 设置 JProgressBar 使用的数据模型。 |
| 26 |
void setOrientation(int newOrientation) 将进度条的方向设置为 newOrientation,它必须是 SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL。 |
| 27 |
void setString(String s) 设置进度字符串的值。 |
| 28 |
void setStringPainted(boolean b) 设置 stringPainted 属性的值,该属性确定进度条是否应呈现进度字符串。 |
| 29 |
void setUI(ProgressBarUI ui) 设置呈现此组件的外观对象。 |
| 30 |
void setValue(int n) 将进度条的当前值设置为 n。 |
| 31 |
void updateUI() 将 UI 属性重置为当前外观的值。 |
继承的方法
这个类继承了以下类的方法 −
- javax.swing.JComponent
- java.awt.Container
- java.awt.Component
- java.lang.Object
JProgressBar 示例
在 D:/ > SWING > com > tutorialspoint > gui > 中使用您选择的任何编辑器创建以下 Java 程序
SwingControlDemo.java
package com.tutorialspoint.gui;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class SwingControlDemo {
private JFrame mainFrame;
private JLabel headerLabel;
private JLabel statusLabel;
private JPanel controlPanel;
public SwingControlDemo(){
prepareGUI();
}
public static void main(String[] args){
SwingControlDemo swingControlDemo = new SwingControlDemo();
swingControlDemo.showProgressBarDemo();
}
private void prepareGUI(){
mainFrame = new JFrame("Java Swing Examples");
mainFrame.setSize(400,400);
mainFrame.setLayout(new GridLayout(3, 1));
mainFrame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent windowEvent){
System.exit(0);
}
});
headerLabel = new JLabel("", JLabel.CENTER);
statusLabel = new JLabel("",JLabel.CENTER);
statusLabel.setSize(350,100);
controlPanel = new JPanel();
controlPanel.setLayout(new FlowLayout());
mainFrame.add(headerLabel);
mainFrame.add(controlPanel);
mainFrame.add(statusLabel);
mainFrame.setVisible(true);
}
private JProgressBar progressBar;
private Task task;
private JButton startButton;
private JTextArea outputTextArea;
private void showProgressBarDemo(){
headerLabel.setText("Control in action: JProgressBar");
progressBar = new JProgressBar(0, 100);
progressBar.setValue(0);
progressBar.setStringPainted(true);
startButton = new JButton("Start");
outputTextArea = new JTextArea("",5,20);
JScrollPane scrollPane = new JScrollPane(outputTextArea);
startButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
task = new Task();
task.start();
}
});
controlPanel.add(startButton);
controlPanel.add(progressBar);
controlPanel.add(scrollPane);
mainFrame.setVisible(true);
}
private class Task extends Thread {
public Task(){
}
public void run(){
for(int i =0; i<= 100; i+=10){
final int progress = i;
SwingUtilities.invokeLater(new Runnable() {
public void run() {
progressBar.setValue(progress);
outputTextArea.setText(outputTextArea.getText()
+ String.format("Completed %d%% of task.\n", progress));
}
});
try {
Thread.sleep(100);
} catch (InterruptedException e) {}
}
}
}
}
使用命令提示符编译程序。 转到 D:/ > SWING 并键入以下命令。
D:\SWING>javac com\tutorialspoint\gui\SwingControlDemo.java
如果没有报错,说明编译成功。 使用以下命令运行程序。
D:\SWING>java com.tutorialspoint.gui.SwingControlDemo
验证以下输出。

