我有一个表视图,每次都会很好地填充,
我的主控制器:
@Override
public void initialize(URL location, ResourceBundle resources) {
TableColumn tblc = new TableColumn("Test");
tblc.setCellValueFactory(new PropertyValueFactory<Test, Integer>("TestData"));
tbl1.getColumns().setAll(tblc);
tbl1.setItems(aHandler.getInstance().getData());
...
我的测试类:
public class Test extends Thread {
public Integer TestData=1;
....
扩展测试类并覆盖其运行的Test1类:
public class Test1 extends Test {
@Override
public void run() {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask(){
public void run() {
setTestData(getTestData()+1);
System.out.println(getTestData());
}
}, new Date(), 1000);
...
我的aHandler:
public class aHandler {
private ObservableList<Test> TestObservableList = FXCollections.<Test>observableArrayList();
public ObservableList<Test> getData() {
return TestObservableList;
}
由于tbl1被绑定到aHandler.getInstance().GetData(),所以在我第一次初始化该类时,我看到TestData=1列填充了值1;但是当计时器开始更改TestData时,表视图没有获得新的赋值。我做错了什么?
我已经尽了最大的努力来解释这个问题,如果还不清楚,请告诉我,我会解释更多。
编辑:为了更好地解释,我想在每次TestData值更改时自动更新TableView。这就是我的最终目标。
发布于 2019-02-25 01:13:50
解决方案是在计时器中使用TableView.refresh();。
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
Platform.runLater(() -> {
tableView.refresh();
});
}
}, new Date(), 1000);
https://stackoverflow.com/questions/54853956
复制相似问题