У меня есть следующий фрагмент кода, в котором есть индикатор выполнения, который должен прогрессировать.увеличение процентной доли progress
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.
пожалуйста, дайте мне знать, как я могу получить это сделать.
Спасибо
Ваш код не работает? –
Привет @tinysunlight, это сработало, но индикатор выполнения остановился на 24%, и было создано 24 файла. – user3872094
. Вы должны получать доступ только к компонентам Swing в Thread Dispatch Thread. Пожалуйста, приложите к этому: https://docs.oracle.com/javase/tutorial/uiswing/examples/components/ProgressBarDemoProject/src/components/ProgressBarDemo.java – keuleJ