javafx只读属性的双向绑定

时间:2018-04-15 09:35:04

标签: java javafx bind

当我尝试编译此应用程序时,我收到有关不匹配的类型的错误。这个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());
    }
}

1 个答案:

答案 0 :(得分:0)

您需要一个与rightTableView.itemsProperty双向绑定的中间媒体资源。

并更改worker.valueProperty的侦听器,其中将worker结果应用于该中间属性。