gpt4 book ai didi

java - 增加进度条百分比

转载 作者:行者123 更新时间:2023-12-01 10:52:23 24 4
gpt4 key购买 nike

我有下面的代码,其中有一个必须前进的进度条。

public void createFiles(String srcText, String destText, JTextArea outputTextArea, JProgressBar progressBar) {
String zipFilePath = srcText;
String destDirectory = destText;
UnZip unzipper = new UnZip();
File dir = new File(zipFilePath);
File[] files = dir.listFiles();
System.out.println(files.length);
double pBarInt = (double) files.length / 100;
int count = 1;
System.out.println(count);
if (null != files) {
for (int fileIntList = 0; fileIntList < files.length; fileIntList++) {
System.out.println("coun in vlocj " + count);
String ss = files[fileIntList].toString();
if (null != ss && ss.length() > 0) {
try {
if (files[fileIntList].isDirectory())
continue;
unzipper.unzip(zipFilePath + ss.substring(ss.lastIndexOf("\\") + 1, ss.length()), destDirectory,
outputTextArea);
if ((fileIntList + 1) % pBarInt == 0) {
progressBar.setValue(count);
progressBar.update(progressBar.getGraphics());
count += 1;
}

} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}
}

这里files.length的值为25。

我的问题是,由于有 25 个文件,其中 1% 就是 2.5%,我可以将每 4 个文件处理的进度条增加为 10%,还是可以在处理文件时显示 2.5%。

如果files.length大于100,我可以做到,但无法理解小于100的文件。

请告诉我如何完成此任务。

谢谢

最佳答案

您可能只需要正确设置最大值即可。例如:

progressBar.setMaximum(files.length);

要首先获取文件而不获取目录,请执行以下操作:

File[] files = dir.listFiles(new FilenameFilter() {   
@Override
public boolean accept(File file, String name) {
return !file.isDirectory();
}
});

我会这样写:

File[] files = dir.listFiles(new FilenameFilter() {   
@Override
public boolean accept(File file, String name) {
return !file.isDirectory();
}
});
progressBar.setMaximum(files.length);
for (int i = 0; i < files.length; i++) {
File f = files[i];
try {
unzipper.unzip(f.getAbsolutePath(), destDirectory, outputTextArea);
progressBar.setValue(i);
progressBar.update(progressBar.getGraphics());
} catch (Exception ex) {
ex.printStackTrace();
}
}

您可能想在线程中分派(dispatch)它。请参阅对您的问题的评论。

关于java - 增加进度条百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33782594/

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