Как я могу сделать прогресс выполнения распаковки архива 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();
// ...
}