1

我必须根据显示的数据更改 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但我需要在更改样式之前对数据进行应有的排序。

我做错什么了吗?是否存在更好的方法来做我描述的事情?

4

1 回答 1

0

如果你有一个特定的 css 文件并添加它,你可以这样做。

final String css = getClass.getResource("the_css.css").toExternalForm();

并将其添加到 Platform.runLater 中:

 scene.getStylesheet.add(css);

必要时删除:

scene.getStylesheet.remove(css);

不完全确定这是否有效,但它应该立即更改背景颜色,而不是在刷新后。我希望它可以帮助您朝着正确的方向前进。

于 2013-12-07T20:04:18.727 回答