gpt4 book ai didi

java - 程序运行时的进度条

转载 作者:行者123 更新时间:2023-12-01 15:00:25 25 4
gpt4 key购买 nike

我正在尝试在程序执行时添加到程序进度栏。实际上我想添加如下内容:

public class TestProgressBar extends javax.swing.JFrame {
public TestProgressBar Bar;
public TestProgressBar() {
initComponents();
Bar=this;
}
public void start(){
//progress bar action
SwingUtilities.invokeLater(new Runnable() {
public void run() {
for(int i=0;i<100;i++){
jProgressBar1.setValue(jProgressBar1.getValue()+10);
try {
Thread.currentThread().sleep(100);
} catch (InterruptedException ex) {
Logger.getLogger(TestProgressBar.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
});
//program running
while(true);
}
public static void main(String args[]) {
TestProgressBar t=new TestProgressBar();
t.setSize(320, 320);
t.pack();
t.setVisible(true);
t.start();
}
// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JProgressBar jProgressBar1;
// End of variables declaration
}

但是不起作用
我找到了实现我想做的事情的代码
Code但对于met来说它很困惑
所以问题是如何实现进度条,其变化比程序正在运行?进度条值发生变化,但表单不显示这些变化

最佳答案

您正在调用 Thread.sleep(...)在使您的应用程序进入休眠状态的 Swing 事件线程上。 while (true)也可能在事件线程上调用,但我对此不是 100% 确定。

解决方案:不要踩在 Swing 事件线程(或事件调度线程或 EDT)上,而是使用后台线程来实现此目的。请阅读Concurrency in Swing了解如何使用 SwingWorker 来帮助您为此创建后台线程。

关于java - 程序运行时的进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13733046/

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