Привязка свойства JavaFX TableView в другом потоке - PullRequest
0 голосов
/ 30 января 2019

У меня есть программа, которая работает с SQLite и JDBC.Вот как я получаю List <> для TableView policyTable:

class GetAllPoliciesTask extends Task {

@Override
public ObservableList<Policy> call()  {
    return FXCollections.observableArrayList
            (Datasource.getInstance().queryPoliciesForMainTable());
}

Вот как я связываю его с TableView:

@FXML
public void getPolicies(){
    Task<ObservableList<Policy>> task = new GetAllPoliciesTask();
    policyTable.itemsProperty().bind(task.valueProperty());
    Thread thread = new Thread(task);
    thread.start();
}

Все работает хорошо, но я хочу добавить некоторые функции -после того, как данные загружены из источника данных и связаны с TableView, я хочу выбрать последнюю выбранную строку в TableView.И вот тут начинаются проблемы.Я не могу получить доступ к TableView.Я пытался использовать join (), но это не помогает:

private int selectedPolicyIndex = -1;

@FXML
public void getPolicies(){
    Task<ObservableList<Policy>> task = new GetAllPoliciesTask();
    policyTable.itemsProperty().bind(task.valueProperty());
    Thread thread = new Thread(task);
    thread.start();
    try {
        thread.join();
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
    if(selectedPolicyIndex >= 0){
        policyTable.getSelectionModel().select(selectedPolicyIndex);
    }
}

Как TableView "заблокирован" или в некотором прогрессе.Можете ли вы помочь мне?

...