обновление JProgressBar во время обработки

Я знаю, что этот вопрос уже был замечен во многих Вопросах и на него даны ответы, но все же я не могу пройти через него.

я всего-лишь хочуобновлять ProgressBar при извлечении некоторых вещей большого файла XML. Я думал, что этого было достаточно, чтобы цикл, занимающий много времени, находился в другом потоке, но? .. Все, что мне удалось получить, - это прогрессбар, который либо вообще не показывался, либо обновлялся в конце незадолго до его закрытия.

Instanced где-то рядом с запуском приложения, у меня есть:

public class SomeClass {
    private SomeClass () {
        myXMLParser reader = new myXMLParser();
        CoolStuff fromXml = reader.readTheXml();
    }
}

при показе и обновлении JDialog с помощью JProgressBar:

public class LoadingDialog extends JDialog {
    private JProgressBar progressBar;
    /* ... */
    public void progress() {
        progressBar.setValue(progressBar.getValue() + 1);
    }
}

Итак, у меня есть этоmyXMLParser:

public class myXMLParser {
    private LoadingDialog loadingDialog = new LoadingDialog();

    public CoolStuff readTheXml() {
        CoolStuff fromXml = new CoolStuff();
        while(manyIterations) {
            loadingDialog.progress();
            fromXml.add(some() + xml() + reading());
        }
        return fromXml;
    }
}

Я видел много вещей сSwingWorker и используяPropertyChange события обновляют progressBar, но примеры всегда приводятсявсе в одномс обработкой и индикатором выполнения в одном и том же классе, а также с классами внутри классов, и так как я начинаю на Java, я не смог перевести это в мою ситуацию.

Любая помощь? .. Любые (не слишком очевидные) советы?

Редактировать: Так что благодаря btantlinger это сработало так:

public class SomeClass {
    private SomeClass () {
        myXMLParser reader = new myXMLParser();
        new Thread(new Runnable() {
            @Override
            public void run() {
                CoolStuff fromXml = reader.readTheXml();
            }
        }).start();
    }
}

public class LoadingDialog extends JDialog {
    private JProgressBar progressBar;
    /* ... */
    public void progress() {
        progressBar.setValue(progressBar.getValue() + 1);
    }
}

public class myXMLParser {
    private LoadingDialog loadingDialog = new LoadingDialog();

    public CoolStuff readTheXml() {
        CoolStuff fromXml = new CoolStuff();
        while(manyIterations) {
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    loadingDialog.progress();
                }
            });
            fromXml.add(some() + xml() + reading());
        }
        return fromXml;
    }
}

Ответы на вопрос(2)

Ваш ответ на вопрос