Я пытаюсь сделать небольшую программу для школьного проекта, которая извлекает файлы. Я использую JList для отображения всех извлеченных файлов, но после многих часов я не могу понять, как сделать это обновление JList, когда в папке есть новые файлы. Он не обновляет sh должным образом в ActionListener кнопки, так как пакетный файл (фактический экстрактор) занимает различное время до завершения sh. Как мне заставить это работать?
Это класс, который я использую для поиска файлов с определенным расширением:
public class fileFinder {
public static String[] thing() {
File file = new File(".\\at9snfsbs");
File[] files = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if (name.toLowerCase().endsWith(".at9")) {
return true;
} else {
return false;
}
}
});
String[] fileNames = new String[files.length];
for (int i = 0; i < files.length; i++) {
fileNames[i] = files[i].getName();
}
return fileNames;
}
}
Это JList:
DefaultListModel model = new DefaultListModel();
String[] things = fileFinder.thing();
for (int i = 0; i < things.length; i++) {
model.addElement(things[i]);
}
JList list = new JList(model);
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
scrollPane.setViewportView(list);
И это ActionListener кнопки, который запускает пакетный файл, который является фактическим конвертером:
try {
Runtime.getRuntime().exec("cmd /c start .\\at9snfsbs\\shit.bat");
String[] thang = fileFinder.thing();
model.clear();
for (int i = 0; i < thang.length; i++) {
model.addElement(thang[i]);
};
} catch (IOException e1) {
e1.printStackTrace();
}
У меня нет опыта или хорошего кодирования, поэтому любая помощь будет признательна!