JTable с обновленными значениями после выполнения поиска файла
Я пытаюсь создать программу, которая ищет путь к файлу по известному пути. Если поиск найдет файл, я бы хотел, чтобы программа обновила JTable
так что он удаляет этот файл из таблицы.
Дело в том, чтобы таблица отображала файлы, которых еще нет в этой определенной папке.
изменить: столбцы "Philly" и "L2" являются именами серверов. Строки - это рабочие станции, которые находятся на этих серверах. Эти два соотношения таковы, что, когда работа была завершена на рабочих станциях, человек, который завершил эту работу, делает снимок экрана с помощью "Snipping Tool", который затем сохраняется в виде файла.PNG в назначенной папке. Файлы сохраняются как... Если сервер 1, рабочая станция 1 завершена, он будет сохранен как "1-1 MyInitials.PNG" внутри указанной папки.
Идея использования автоматического TimerTask - отличная идея, хотя я совершенно не знаком с ней.
1 ответ
Вы можете использовать DefaultTableModel JTable, чтобы найти то, что находится в таблице для совпадения имени файла.
- Выполните итерацию по строкам таблицы и прочитайте значение в столбце ячейки, который содержит имя файла. Для этого вы можете использовать метод DefaultTableModel#getRowCount() и методы DefaultTableModel#getValueAt().
- Как только вы нашли совпадение, которое хотите удалить из таблицы, вы можете использовать метод DefaultTableModel#removeRow().
Метод для такого рода вещей может выглядеть примерно так (не проверено):
public void removeIfExist(JTable yourJTable, String fileName) {
// Get Table Model
DefaultTableModel dtm = (DefaultTableModel) yourJTable.getModel();
// Get Table Row Count
int rowCount = dtm.getRowCount();
// Assuming file names are in column 1
// and not in column 0.
int fileNameColumn = 1;
// Iterate through each table row and get the String
// value for what is within the row cell of column 1.
for (int i = 0; i < rowCount; i++) {
// Grab the string value in column 1 of current row.
String stringValue = dtm.getValueAt(i, fileNameColumn).toString();
// Is the cell's String value the same as the file name?
// If you want to ignore letter case for comparing then
// use equalsIgnoreCase() instead of equals().
if (stringValue.equals(fileName)) {
// Yes it is so remove the row from JTable.
dtm.removeRow(i);
// Found a match so no need to check
// further. Get out of loop.
break;
}
// No it's not so check the cell in next
// table row (if there is one).
}
}
Конечно, вы можете изменить этот метод для обработки списка имен файлов вместо одного имени файла за раз. Опять же, приведенный выше код не тестируется и просто очень быстро, но я думаю, что это дает вам представление о том, как это можно сделать.