我有一个表格视图,每次都会很好地填充它,
我的主控制器:
@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类,用于扩展Test类并覆盖其运行:
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);
...
我的处理程序:
public class aHandler {
private ObservableList<Test> TestObservableList = FXCollections.<Test>observableArrayList();
public ObservableList<Test> getData() {
return TestObservableList;
}
由于tbl1绑定到aHandler.getInstance()。GetData(),因此我第一次初始化类时,看到Test列填充了值1,为TestData = 1;但是当计时器开始更改TestData时,表视图不会获得新的分配值。我在做什么错了?
我已尽力解释这个问题,如果仍然不清楚,请告诉我,我将作进一步解释。
编辑:为更好地解释,我想在TestData值更改时每次自动更新TableView。这是我的最终目标。
答案 0 :(得分:-1)
解决方案是使用TableView.refresh();在计时器中。
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
Platform.runLater(() -> {
tableView.refresh();
});
}
}, new Date(), 1000);