我改变了某些表格行的样式,以便进行一些突出显示:
table.setRowFactory(tv -> new TableRow<TableBean>() {
@Override
public void updateItem(TableBean item, boolean empty) {
super.updateItem(item, empty);
if (item == null) {
setStyle("");
} else if (item.getComparisonElement().isMarker()) {
setStyle("-fx-border-color: red;");
} else {
setStyle("");
}
}
});
这有效,但我有一些细胞&#34;转移&#34;作为一种不必要的副作用:
答案 0 :(得分:0)
我怀疑有一些带边框的行而其他没有乱七八糟的布局。
默认样式表modena.css实现大多数边框效果的方式是实际使用“嵌套背景”。这个想法是绘制一个没有插入的纯色背景颜色,然后用正插图绘制第二个背景颜色。例如。如果你绘制一个零插入的红色背景,然后是默认背景颜色的背景,每边有一个1像素的插图,它将创建一个1像素宽的红色边框的效果。 (有趣的是 - 我没有任何真实的证据 - 这种技术比使用实际的边框设置有更好的性能。)这个用例的优点是添加(实际)边框会将表格行的布局更改为空格被分配到边框,而改变背景颜色对布局没有影响。
所以试试这个:
table.setRowFactory(tv -> new TableRow<TableBean>() {
@Override
public void updateItem(TableBean item, boolean empty) {
super.updateItem(item, empty);
if (item == null) {
setStyle("");
} else if (item.getComparisonElement().isMarker()) {
setStyle("-fx-background-color: red, -fx-background;"+
"-fx-background-insets: 0, 1;");
} else {
setStyle("");
}
}
});