javafx - JavaFX TableView 未更新 ObservableList 更改
问题描述
我有一个表格视图,每次都能很好地填充,
我的主控制器:
@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;
....
扩展 Test 类并覆盖其运行的 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);
...
我的处理程序:
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。这是我的最终目标。
解决方案
解决方案是使用 TableView.refresh(); 在计时器中。
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
public void run() {
Platform.runLater(() -> {
tableView.refresh();
});
}
}, new Date(), 1000);
推荐阅读
- java - 两个列表之间的同步
- javascript - 如何在浏览器中编辑网页的 javascript 源
- wordpress - Wordpress添加动作'init'不工作的前端
- python - 正则表达式在没有重复连续字符的句子中查找单词
- kotlin - 无法在 Kotlin 中导入协程
- ios - UICollectionView 在 iPad 旋转时无法正确适应
- drake-r-package - 如何从 r-drake 中的多个文件导入?
- javascript - javascript - SVG 圆圈样式不整洁
- javascript - 销毁 JWT 令牌,当用户被禁止或编辑时强制注销
- python - Pandas - 如果少于 N 则删除唯一行