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() |
以不同方式处理模型中的更改事件的子类。 |
3 | protected void fireStateChanged() |
将源为JProgressBar 的ChangeEvent 发送给已注册对ChangeEvents 感兴趣的所有ChangeListener 。 |
4 | AccessibleContext getAccessibleContext() |
获取与此JProgressBar 关联的AccessibleContext 。 |
5 | ChangeListener[] getChangeListeners() |
返回使用addChangeListener 添加到此进度栏的 所有ChangeListener 的数组。 |
6 | int getMaximum() |
从有界范围模型返回进度条最大值。 |
7 | int getMinimum() |
从BoundedRangeModel 返回进度条的最小值。 |
8 | BoundedRangeModel getModel() |
返回此进度条使用的数据模型。 |
9 | int getOrientation() |
返回SwingConstants.VERTICAL 或SwingConstants.HORIZONTAL ,具体取决于进度条的方向。 |
10 | double getPercentComplete() |
返回进度条的完成百分比。 |
11 | String getString() |
返回当前进度的String 表示形式。 |
12 | ProgressBarUI getUI() |
返回呈现此组件的外观对象。 |
13 | String getUIClassID() |
返回呈现此组件的外观类的名称。 |
14 | int getValue() |
从有界范围模型返回进度条当前值。 |
15 | boolean isBorderPainted() |
返回borderPainted 属性。 |
16 | boolean isIndeterminate() |
返回indeterminate 属性的值。 |
17 | boolean isStringPainted() |
返回stringPainted 属性的值。 |
18 | protected void paintBorder(Graphics g) |
绘制边框的进度条边框绘制属性为true 。 |
19 | protected String paramString() |
返回此JProgressBar 的字符串表示形式。 |
20 | void removeChangeListener(ChangeListener l) |
从进度栏中删除ChangeListener 。 |
21 | void setBorderPainted(boolean b) |
设置borderPainted 属性。 |
22 | void setIndeterminate(boolean newValue) |
设置进度条的不确定属性。 |
23 | void setMaximum(int n) |
将进度条的最大值(存储在进度条的数据模型中)设置为n 。 |
24 | void setMinimum(int n) |
将进度条的最小值(存储在进度条的数据模型中)设置为n 。 |
25 | void setModel(BoundedRangeModel newModel) |
设置JProgressBar 使用的数据模型。 |
26 | void setOrientation(int newOrientation) |
将进度条的方向设置为newOrientation 。 |
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示例
使用编辑器创建以下Java程序 -
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JProgressBarExample {
private JFrame mainFrame;
private JLabel headerLabel;
private JLabel statusLabel;
private JPanel controlPanel;
public JProgressBarExample() {
prepareGUI();
}
public static void main(String[] args) {
JProgressBarExample swingControlDemo = new JProgressBarExample();
swingControlDemo.showProgressBarDemo();
}
private void prepareGUI() {
mainFrame = new JFrame("Java Swing JProgressBar示例(yiibai.com)");
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("开始...");
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("任务已完成:%d%% \n", progress));
}
});
try {
Thread.sleep(100);
} catch (InterruptedException e) {
}
}
}
}
}
执行上面示例代码,得到以下结果: