tableview - Javafx TableView 单元格/模型更改/更新事件
问题描述
我有一个 javafx TableView 显示从服务器抓取的数据并放入模型中。模型数据将每隔几秒更新一次,可能会添加新行或修改特定模型数据。
假设我有一个名为“优先级”的列,用户单击优先级标题以根据优先级对表进行排序以查看 LOW MEDIUM HIGH 优先级。添加新行时,将根据排序正确插入行。
这里的问题是,当一个现有行的数据被修改时,例如,我使用一个按钮来改变第一行的优先级。
btn.setOnAction(new EventHandler<ActionEvent>(){
@Override
Public void handle(ActionEvent event){
data.get(0).setPriority("HIGH");
}
});
该表没有立即反映更改,也没有排序。当我双击要编辑的单元格或使用表格时,我只能看到修改后的优先级。
所以这是我的问题:
为什么我的表在数据更改后没有立即反映更改?PS:我确实使用
table.setItems(数据);
有没有办法在数据被修改时通知我,因为如果是这样,我可能能够触发我的表的某种刷新以反映这些更改。但如果我不知道,我不能这样做当数据被修改
解决方案
该表没有立即反映更改,也没有排序。当我双击要编辑的单元格或使用表格时,我只能看到修改后的优先级。
这是因为您没有tableview
在单击按钮时刷新更新后的行。您还必须设置排序顺序tableview
btn.setOnAction(new EventHandler<ActionEvent>(){
@Override
Public void handle(ActionEvent event){
data.get(0).setPriority("HIGH");
priorityColumn.setSortType(TableColumn.SortType.ASCENDING);
tableview.refresh();
tableview.getSortOrder().clear();
tableview.getSortOrder().addAll(priorityColumn);
}
});
有没有办法在修改数据时通知我,因为如果是这样,我可能能够触发我的表的某种刷新以反映这些更改..但如果我不知道我不能这样做当数据被修改
为此,请参阅此帖子James_D
中的答案
推荐阅读
- compiler-errors - 此文件不属于任何项目 在 clion 中打开项目时代码洞察可能无法正常工作
- database - 将 Hive 列从字符串转换为具有 NaT 值的时间戳
- visual-studio - Visual Studio 市场下滑
- python - 使用 Pyinstaller 或 Cython 从 Python 模块创建可执行文件
- vba - 在存储为变量的表单上调用 .setFocus 时出错
- codeigniter - Codeigniter 生成文本视图
- apache - apache2.service:无法运行“启动”任务:没有这样的文件或目录
- php - 删除任何以特定字符串开头的行?
- c# - 如何将布尔数组绑定到 WPF 中矩形网格的可见性属性?
- java - 您如何以编程方式从片段内部设置 ViewPager 选项卡?