溫馨提示×

java如何實現(xiàn)進度條顯示

小億
162
2023-08-24 07:12:29
欄目: 編程語言

在Java中可以通過使用JProgressBar類來實現(xiàn)進度條的顯示。

以下是一個簡單的例子,演示了如何在Java中實現(xiàn)進度條的顯示:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ProgressBarExample extends JFrame {
private final JProgressBar progressBar;
private final JButton startButton;
public ProgressBarExample() {
setTitle("進度條示例");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
// 創(chuàng)建進度條
progressBar = new JProgressBar(0, 100);
progressBar.setPreferredSize(new Dimension(250, 30));
progressBar.setStringPainted(true);
// 創(chuàng)建開始按鈕
startButton = new JButton("開始");
startButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// 啟動一個線程更新進度條
new Thread(new Runnable() {
@Override
public void run() {
for (int i = 0; i <= 100; i++) {
final int progress = i;
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
progressBar.setValue(progress);
}
});
try {
Thread.sleep(100); // 模擬耗時任務(wù)
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
}
});
add(progressBar);
add(startButton);
pack();
setLocationRelativeTo(null);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new ProgressBarExample().setVisible(true);
}
});
}
}

在上述代碼中,我們創(chuàng)建了一個JFrame窗口,其中包含一個JProgressBar進度條和一個JButton按鈕。當(dāng)點擊按鈕時,我們啟動一個新的線程,通過更新進度條的值來顯示進度。

在線程中,我們使用SwingUtilities.invokeLater()方法來確保更新操作在事件分發(fā)線程中進行,這是因為Swing組件只能在事件分發(fā)線程中進行更新操作。

在每次循環(huán)中,我們使用Thread.sleep()方法來模擬一個耗時任務(wù)。根據(jù)實際情況,您可以根據(jù)需要修改這個時間間隔。

最后,我們使用SwingUtilities.invokeLater()方法來啟動整個應(yīng)用程序,并在事件分發(fā)線程中創(chuàng)建并顯示ProgressBarExample窗口。

通過運行上述代碼,您將看到一個包含進度條和開始按鈕的窗口。當(dāng)您點擊開始按鈕時,進度條將逐漸填滿,直到達到100%。

0