- Swing 教程
- Swing - 首页
- Swing - 概述
- Swing - 环境
- Swing - 控件
- Swing - 事件处理
- Swing - 事件类
- Swing - 事件监听器
- Swing - 事件适配器
- Swing - 布局
- Swing - 菜单
- Swing - 容器
- Swing 有用资源
- Swing - 快速指南
- Swing - 有用资源
- Swing - 讨论
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() 发送一个 ChangeEvent(其源为 JProgressBar)到所有对 ChangeEvents 感兴趣的 ChangeListeners。 |
| 4 |
AccessibleContext getAccessibleContext() 获取与此 JProgressBar 关联的 AccessibleContext。 |
| 5 |
ChangeListener[] getChangeListeners() 返回使用 addChangeListener 添加到此进度条的所有 ChangeListeners 的数组。 |
| 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() 返回呈现此组件的 look-and-feel 对象。 |
| 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) 设置进度条的 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,newOrientation 必须是 SwingConstants.VERTICAL 或 SwingConstants.HORIZONTAL。 |
| 27 |
void setString(String s) 设置进度字符串的值。 |
| 28 |
void setStringPainted(boolean b) 设置 stringPainted 属性的值,该属性决定进度条是否应该呈现进度字符串。 |
| 29 |
void setUI(ProgressBarUI ui) 设置呈现此组件的 look-and-feel 对象。 |
| 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
验证以下输出。