Как я могу сделать прогресс выполнения распаковки архива Zip4J Java?

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

Часть кода, перед распаковкой:

TaskDialog d = new TaskDialog(locale);
SwingWorker t = new SwingWorker() {
    @Override
    protected Object doInBackground() throws Exception {
          d.setVisible(true);
          return null;
    }
};
t.execute(); // пытаюсь запустить окно выполнения
pfile.place(ts, password, d); // здесь начинается распаковка

// распаковка 
public boolean place(TempStorage ts, String password, TaskDialog ... dialog ) {
    try {
        ZipFile zf = new ZipFile(dir, password.toCharArray());
        if (dialog.length != 0) {
            zf.setRunInThread(true);
            dialog[0].monitor = zf.getProgressMonitor();
        }
        zf.extractAll(ts.asFile().toString());
        if (dialog.length != 0) {
            while (!dialog[0].monitor.getState().equals(ProgressMonitor.State.READY)) {
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            dialog[0].dispose();
            // ...
        }

Ответы (0 шт):