91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

java progressbar如何處理長時間運行的任務

小樊
83
2024-09-05 16:31:07
欄目: 編程語言

在Java中,處理長時間運行的任務時,可以使用Swing的JProgressBar組件來顯示進度。以下是一個簡單的示例,展示了如何使用JProgressBar處理長時間運行的任務:

  1. 首先,導入所需的庫:
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
  1. 創建一個繼承自JFrame的類,并實現一個長時間運行的任務:
public class ProgressBarExample extends JFrame {
    private JProgressBar progressBar;
    private Timer timer;

    public ProgressBarExample() {
        initUI();
    }

    private void initUI() {
        setLayout(new BorderLayout());
        setSize(300, 200);
        setTitle("ProgressBar Example");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLocationRelativeTo(null);

        progressBar = new JProgressBar(0, 100);
        add(progressBar, BorderLayout.CENTER);

        JButton startButton = new JButton("Start");
        startButton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                startTask();
            }
        });
        add(startButton, BorderLayout.SOUTH);
    }

    private void startTask() {
        timer = new Timer(100, new ActionListener() {
            private int counter = 0;

            @Override
            public void actionPerformed(ActionEvent e) {
                if (counter < 100) {
                    progressBar.setValue(counter);
                    counter++;
                } else {
                    ((Timer) e.getSource()).stop();
                }
            }
        });
        timer.start();
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                ProgressBarExample ex = new ProgressBarExample();
                ex.setVisible(true);
            }
        });
    }
}

在這個示例中,我們創建了一個包含JProgressBar和一個按鈕的窗口。當用戶點擊“Start”按鈕時,將開始一個模擬的長時間運行的任務。我們使用javax.swing.Timer來定期更新JProgressBar的值。這樣,我們可以在不阻塞事件分發線程(EDT)的情況下執行長時間運行的任務。

注意:在實際應用中,您可能需要使用SwingWorker或其他多線程技術來處理長時間運行的任務,以避免阻塞EDT。

0
泉州市| 香河县| 九龙县| 临朐县| 亳州市| 昭平县| 营山县| 清丰县| 宜黄县| 阿尔山市| 无极县| 丘北县| 澳门| 湘潭市| 廉江市| 泰和县| 遵化市| 禄丰县| 英超| 潜山县| 白玉县| 图木舒克市| 同德县| 阿拉善右旗| 鄂尔多斯市| 涟源市| 越西县| 太保市| 仁布县| 丹棱县| 和平县| 伊川县| 松江区| 宁夏| 西林县| 乐平市| 油尖旺区| 深泽县| 广丰县| 侯马市| 屏山县|