gpt4 book ai didi

java - Jdialog 框中的 Jprgressbar 未更新

转载 作者:行者123 更新时间:2023-12-02 00:27:14 24 4
gpt4 key购买 nike

我想显示使用 jprogressbar 将文件从一个文件夹复制到另一个文件夹的进度。我已经完成了所有的事情,但 jprogress bar 在最后运行并在最后显示 100%。我是初学者,阅读了这种形式的主题,其中说我应该使用 EDT,但我仍然没有得到所有的东西。我还创建了另一个线程来更新 Jprogress 栏,但没有任何反应。我的部分代码是

        jProgressBar1.setMinimum(0);
jProgressBar1.setMaximum(100);
try
{
fis = new FileInputStream(read);
BufferedInputStream bins = new BufferedInputStream(fis);
int b;
long copied_data=0;
for(int i =0;i<no_of_parts;i++)
{
copied_data = 0;
fos = new FileOutputStream(jTextField2.getText()+"\\"+reading_file_name+".part"+i);
bouts = new BufferedOutputStream(fos);
while((b = bins.read())!= -1)
{
bouts.write(b);
percentage = (progress*100)/file_size;
jProgressBar1.setValue(percentage);
copied_data++;
progress++;

if(copied_data==each_part_size_in_byte)
{
bouts.flush();
bouts.close();
break;
}
}
bouts.flush();
bouts.close();

}

}catch(Exception e){}

最佳答案

更新进度条的代码不应与文件复制操作在同一线程上运行。您需要在单独的线程上运行文件复制操作,并需要一个 Swing 计时器来查询复制任务的进度并定期更新 EDT 上的进度条。您当前正在 EDT 上执行所有操作,这会阻止进度条更新,因为您在操作正在进行时锁定了事件线程。您应该只使用 EDT 来更新 Swing 组件,其他所有内容都应该在其他线程中运行。

关于java - Jdialog 框中的 Jprgressbar 未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9758816/

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