我有一个可用于SQLite和JDBC的程序。 这就是我为TableView policyTable获取List <>的方式:
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被“锁定”或正在进行中。你能帮我吗?