Обновление JProgresBar, расположенного внутри EventQueue.InvokeLater - PullRequest
0 голосов
/ 06 декабря 2018

У меня проблема с обновлением JProgressBar:

//Start to search for files on drives
private void searchForDICOMFIles2(ArrayList<String> foundDriveLetters)
{

    //Thread 1 - search for DICOM files and add them to array
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {

                ////here is the problem
                for (String currentDriveLetter_2:foundDriveLetters)
                {
                    File currentDrive_2 = new File(currentDriveLetter_2);
                    checkFilesAndFoldersForDICOMFiles(currentDrive_2);

                }

                //updating here will work
                Screen_ImportingFiles.setCheckMarkForTaskLabel(1);
                Screen_ImportingFiles.updateProgressBar(25, 1, true);

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

Метод checkFilesAndFoldersForDICOMFiles - это огромный цикл FOR, который выполняет итерации по файлам на диске и ищет файлы DICOM на основе расширения, и, если расширение отсутствует, он пытаетсяпрочитать файл, чтобы определить, является ли он DICOM или нет.Основываясь на количестве файлов, он также хочет отображать ход проверки файлов (т. Е. 50% означало бы, что он проверял 150 файлов из 300).Когда я хочу обновить индикатор выполнения с помощью этого метода, он не обновляет индикатор выполнения на JFrame.

Есть ли способ обновить индикатор выполнения, как этот?

...