我正在尝试更新tableview中的行背景颜色和文本。但是我只能更新背景色。但是我无法使用-fx-text-fill更新文本颜色。有人可以帮忙。
@FXML
private void initialize(){
tablename.setRowFactory(tv -> new TableRow<ClassName>()
{
@Override
public void updateItem(ClassName item, boolean empty)
{
super.updateItem(item, empty);
if (item == null)
{
setText(null);
setStyle("");
}
else
{
if (item.gettest().equals("a") {
setStyle("-fx-background-color: #38ee00; -fx-text-fill: green;");
}
if (item.gettest().equals("b") {
setStyle("-fx-background-color: #efe939; -fx-text-fill: red;");
}
}
}
});
}
答案 0 :(得分:0)
TableView
为modena.css
的行背景着色,这就是为什么您可以使用内联样式覆盖此属性的原因。虽然-fx-text-fill
属性是为TableCell
设置的,所以不会使用从TableRow
继承的值。
我建议您自己使用CSS样式表,并将伪类应用于行
final PseudoClass green = PseudoClass.getPseudoClass("green");
tablename.setRowFactory(tv -> new TableRow<ClassName>() {
@Override
public void updateItem(ClassName item, boolean empty) {
super.updateItem(item, empty);
boolean gr = (item != null) && item.gettest().equals("a");
pseudoClassStateChanged(green, gr);
}
});
CSS样式表(需要应用于TableView
,祖先或场景)
.table-row-cell:filled {
-fx-background-color: #efe939;
}
.table-row-cell:filled:green {
-fx-background-color: #38ee00;
}
.table-row-cell:filled .table-cell {
-fx-text-fill: red;
}
.table-row-cell:filled:green .table-cell {
-fx-text-fill: green;
}
答案 1 :(得分:0)
首先需要获取当前ROW:
TableRow<CallLogs> currentRow = getTableRow();
之后,您可以像现在一样设置颜色,但是要在currentRow中设置
: if (item.gettest().equals("a") {
currentRow.setStyle("-fx-background-color: #38ee00; -fx-text-fill: green;");
}
if (item.gettest().equals("b") {
currentRow.setStyle("-fx-background-color: #efe939; -fx-text-fill: red;");
}