当我尝试编译此应用程序时,我收到有关不匹配的类型的错误。这个worker.valueProperty是只读的,所以我认为这就是问题所在。如何绑定此属性?
public void bindToWorker(final Worker<ObservableList<FileForTableView>> worker)
{
// Bind Labels to the properties of the worker
rightTableView.itemsProperty().bindBidirectional(worker.valueProperty());
}
CopyFileTask task = new CopyFileTask(source, destination);
bindToWorker(task);
CopyFileTask类
public class CopyFileTask extends Task<ObservableList<FileForTableView>> {
private File source;
private File destination;
//constructors here
// The task implementation
@Override
protected ObservableList<FileForTableView> call()
{
final ObservableList<FileForTableView> results = Controller.getDirectoryContent(destination);
// Update the title
this.updateTitle("Prime Number Finder Task");
try {
copyFile(source, destination);
System.out.println("file copied");
results.add(new FileForTableView(destination.getName(), destination.length(), destination.isDirectory()));
} catch (IOException e) {
e.printStackTrace();
}
return results;
}
private static void copyFile(File source, File destination) throws IOException {
Files.copy(source.toPath(), destination.toPath());
}
}
答案 0 :(得分:0)
您需要一个与rightTableView.itemsProperty
双向绑定的中间媒体资源。
并更改worker.valueProperty
的侦听器,其中将worker结果应用于该中间属性。