Ну мысль в принципе правильная.
Во первых я бы создал какую то свою сущность которая бы обозначала такую запись. Среди свойств я бы указал File, при надобности можно физически к нему обратиться, т.е
public class SuperDeed {
private File file;
private Set<String> tags;
private String name;
...(getters, setters, constructor)
}
Теперь, из file можно вытащить путь, имя файла и т.д. Не советую работать напрямую с API IO в этой сущности, это модель и она не должна заботиться о всяких IОExceptions.
Вопрос, зачем все это, если 1) можно сохранить в базу данных и не мучаться с файлами 2) если уж работать с файлами, использовать что то типо XStream или Jackson и сохранять как XML/JSON
Теги можно отобразить через запятую, при сохранении проверять, не дописал ли пользователь еще. Для всех этих радостей надо будет играть с TableModel, посмотри подробнее
тут. Так же надо будет написать валидатор для тэгов, т.е свой CellRenderer (чтобы разрешал только запятые).
Как то так, общая идея. Точнее чтобы сказать надо вспоминать swing (на чистом свинге уже года три не писал), но думаю общей мысли хватит. В следующий раз старайся подробнее объяснять свою проблему и использовать «уточнить» а не «ответ» для уточнения, и ставь правильно теги (работа со swing — тег swing и т.д).