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
使用編輯器建立以下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範例(tw511.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) {
}
}
}
}
}
執行上面範例程式碼,得到以下結果: