我必须根据显示的数据更改TableCell的样式类,例如:如果单元格的值在两个连续的行中相同,则必须突出显示单元格(即:背景红色)。这必须同时将数据添加到表中并按任何列进行排序。
为此,在排序时,我向tableview.getSortOrder()
添加了一个监听器,并在其onChange
方法中添加了逻辑,以执行上述操作。例如:
public void onChanged(ListChangeListener.Change<? extends TableColumn> change) {
if (change.getList().size() > 0) {
Platform.runLater(new Runnable() {
@Override
public void run() {
/* set some css on tableview cells */
}
});
}
}
问题在于,这样做的css更改不会立即应用于下一次刷新表。我的嫌疑人正在Platform.runLater
内进行此操作,但在更改样式之前,我需要将数据按原样排序。
我做错了什么吗?是否有更好的方式来做我描述的事情?
答案 0 :(得分:0)
如果你有一个特定的css文件并添加它,你可以这样做。
final String css = getClass.getResource("the_css.css").toExternalForm();
并在Platform.runLater中添加:
scene.getStylesheet.add(css);
如有必要,请删除:
scene.getStylesheet.remove(css);
不确定这是否有效,但它应该立即改变背景颜色而不是刷新后。我希望它能帮助你朝着正确的方向前进。