JavaFX,在排序时更改css tablecell

时间:2013-12-06 13:24:37

标签: css sorting javafx-2 tablecell

我必须根据显示的数据更改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内进行此操作,但在更改样式之前,我需要将数据按原样排序。

我做错了什么吗?是否有更好的方式来做我描述的事情?

1 个答案:

答案 0 :(得分:0)

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

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

并在Platform.runLater中添加:

 scene.getStylesheet.add(css);

如有必要,请删除:

scene.getStylesheet.remove(css);

不确定这是否有效,但它应该立即改变背景颜色而不是刷新后。我希望它能帮助你朝着正确的方向前进。