Я хочу реализовать поток, который запускает метод displayQueue
в QueueTabPageController
каждые пару секунд, чтобы представление таблицы автоматически обновлялось в графическом интерфейсе JavaFX. В настоящее время он обновляется вручную, нажимая кнопку обновления в графическом интерфейсе, но это не идеально. Я пробовал различные методы, используя некоторые примеры здесь, но, похоже, он не работает правильно. Кстати, я новичок в потоках. Любая помощь будет принята с благодарностью.Обновление JavaFX TableView thread
public class QueueTabPageController implements Initializable {
@FXML
private TableView<Patient> tableView;
@FXML
private TableColumn<Patient, String> firstNameColumn;
@FXML
private TableColumn<Patient, String> lastNameColumn;
@FXML
private TableColumn<Patient, String> timeEnteredColumn;
@FXML
private TableColumn<Patient, String> triageAssessmentColumn;
@FXML
private QueueTabPageController queueTabPageController;
private ObservableList<Patient> tableData;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
assert tableView != null : "fx:id=\"tableView\" was not injected: check your FXML file 'FXMLQueueTabPage.fxml'";
firstNameColumn.setCellValueFactory(new PropertyValueFactory<Patient, String>("firstName"));
lastNameColumn.setCellValueFactory(new PropertyValueFactory<Patient, String>("lastName"));
timeEnteredColumn.setCellValueFactory(new PropertyValueFactory<Patient, String>("time"));
triageAssessmentColumn.setCellValueFactory(new PropertyValueFactory<Patient, String>("triage"));
// display the current queue to screen when opening page each time
displayQueue(Queue.queue);
}
/**
* @param event
* @throws IOException
*/
@FXML
private void btnRefreshQueueClick(ActionEvent event) throws IOException {
displayQueue(Queue.queue);
}
/**
* @param queue
*/
public void displayQueue(LinkedList<Patient> queue) {
tableData = FXCollections.observableArrayList(queue);
tableView.setItems(tableData);
tableView.getColumns().get(0).setVisible(false);
tableView.getColumns().get(0).setVisible(true);
}
}
спасибо, K