JProgressBar
介绍 (Introduction)
JProgressBar类是一个可视地显示某个任务进度的组件。
Class 声明 (Class Declaration)
以下是javax.swing.JProgressBar类的声明 -
public class JProgressBar
extends JComponent
implements SwingConstants, Accessible
字段 (Field)
以下是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 - 可以在进度条上显示的可选字符串。
类构造函数 (Class Constructors)
Sr.No. | 构造函数和描述 |
---|---|
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) 使用指定的方向,最小值和最大值创建进度条。 |
Class Methods
Sr.No. | 方法和描述 |
---|---|
1 | void addChangeListener(ChangeListener l) 将指定的ChangeListener添加到进度栏。 |
2 | protected ChangeListener createChangeListener() 想要以不同方式处理模型中的更改事件的子类可以重写此方法以返回自定义ChangeListener实现的实例。 |
3 | protected void fireStateChanged() 将源为JProgressBar的ChangeEvent发送给已注册对ChangeEvents感兴趣的所有ChangeListener。 |
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() 返回当前进度的String表示形式。 |
12 | ProgressBarUI getUI() 返回呈现此组件的外观对象。 |
13 | String getUIClassID() 返回呈现此组件的look-and-feel类的名称。 |
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) 设置进度条的不确定属性,该属性确定进度条是处于确定模式还是不确定模式。 |
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属性重置为当前外观的值。 |
方法继承 (Methods Inherited)
该类继承以下类中的方法 -
- javax.swing.JComponent
- java.awt.Container
- java.awt.Component
- java.lang.Object
JProgressBar示例
使用您选择的任何编辑器创建以下Java程序,例如D:/ 》 SWING 》 com 》 xnip 》 gui 》
SwingControlDemo.java
package cn.xnip.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\xnip\gui\SwingControlDemo.java
如果没有错误发生,则表示编译成功。 使用以下命令运行该程序。
D:\SWING>java cn.xnip.gui.SwingControlDemo
验证以下输出。