gpt4 book ai didi

java - 如何使用 JProgressBar

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:54:20 26 4
gpt4 key购买 nike

我想使用 JProgressBar 并且它必须在一秒钟内加载。我不想等待任何任务完成。只想一秒填满进度条。所以我写了下面的代码。但它不起作用。进度条未填满。我是 Java 的新手。请任何人都可以帮助我。

    public void viewBar() {<br/>
progressbar.setStringPainted(true);
progressbar.setValue(0);
for(int i = 0; i <= 100; i++) {
progressbar.setValue(i);
try {
Thread.sleep(10);
} catch (InterruptedException ex) {
JOptionPane.showMessageDialog(null, ex.getMessage());
}
}
progressbar.setValue(progressbar.getMinimum());
}

最佳答案

您不能在主 Swing 线程、EDT 或“事件调度线程”上调用 Thread.sleep(...),因为这只会让您的整个应用程序、进度条和所有内容进入休眠状态。可能您在 1 秒钟内没有看到任何事情发生,然后宾果游戏,整个进度条都被填满了。

我建议您在这部分使用 Swing Timer 而不是 Thread.sleep,或者如果您最终想要监视长时间运行的进程,请使用后台线程,例如 SwingWorker。 JProgressBar 教程中讨论了 SwingWorkers。

例如,使用计时器:

public void viewBar() {

progressbar.setStringPainted(true);
progressbar.setValue(0);

int timerDelay = 10;
new javax.swing.Timer(timerDelay , new ActionListener() {
private int index = 0;
private int maxIndex = 100;
public void actionPerformed(ActionEvent e) {
if (index < maxIndex) {
progressbar.setValue(index);
index++;
} else {
progressbar.setValue(maxIndex);
((javax.swing.Timer)e.getSource()).stop(); // stop the timer
}
}
}).start();

progressbar.setValue(progressbar.getMinimum());
}

关于java - 如何使用 JProgressBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7403729/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com