我的GUI有问题。我使用WatchService
,它运行良好。如何添加此服务以便JTable
显示新文件?
也许还有其他解决方案?我可以请你举几个例子吗?我的表实现了AbstractTableModel
。
我解决了这个问题,但现在如果我添加新文件,我的表会被刷新,但它们会丢失jprogress栏和复选框的渲染器视图。我需要帮助。
Path path = Paths.get(filePath.getAbsolutePath());
try {
Boolean isFolder = (Boolean) Files.getAttribute(path, "basic:isDirectory", NOFOLLOW_LINKS);
if (!isFolder) {
Log.error(this, "Path: " + path + " is not a folder");
throw new IllegalArgumentException("Path: " + path + " is not a folder");
}
System.out.println("Watching path: " + path);
WatchService watchService = path.getFileSystem().newWatchService();
path.register(watchService, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY);
WatchKey key;
while ((key = watchService.take()) != null) {
for (WatchEvent<?> event : key.pollEvents()) {
File[] files = filePath.listFiles();
customTableDataList.clear();
for (File file : files) {
customTableData = new CustomTableData(file);
customTableDataList.add(customTableData);
}
customTableModel = new CustomTableModel(customTableDataList);
这解决了我的问题,表被重新加载,但视图没有呈现。
myTable.setModel(customTableModel);
如果我删除上面的内容并添加(下面的一行(,则我的表视图是正确的,但只有当我单击复选框时(表被重新加载(。
myTable = new Table(customTableModel);