gpt4 book ai didi

使用文本类并选择行时 JavaFX TableColumn 字体颜色错误

转载 作者:行者123 更新时间:2023-11-30 03:47:50 28 4
gpt4 key购买 nike

以下场景:下表/列中有一些行具有长字符串值。我想出了如何通过手动调用“setCellFactory”并将“text.wrappingWidthProperty()”绑定(bind)到列的宽度来解决包装这些长字符串值的问题。

工作正常。

这是我正在谈论的代码片段:

@FXML
private TableView<Row> tableEssen;
@FXML
private TableColumn<Row, String> columnEssen;
...
columnEssen.setCellFactory(new Callback<TableColumn<Row,String>, TableCell<Row,String>>() {
@Override
public TableCell<Row, String> call( TableColumn<Row, String> param) {
final TableCell<Row, String> cell = new TableCell<Row, String>() {
private Text text;
@Override
public void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (!isEmpty()) {
text = new Text(item.toString());
text.wrappingWidthProperty().bind(getTableColumn().widthProperty());
text.fontProperty().bind(fontProperty());
setGraphic(text);
}
}
};
return cell;
}
});

现在我的下一个小问题是,所选行的字体颜色是黑色 - 它应该是白色。列“Essen”与 Text 类一起使用,“Preis”是一个简单的字符串。 “Preis”栏还可以,但“Essen”则不行。我尝试了“text.fontProperty().bind(fontProperty());”,但这没有帮助。

enter image description here

有人知道如何在选择行时获得正确的字体颜色吗?

编辑:问题已解决。

字体略有不同:

左:不带text.getStyleClass().addAll("table-text", "text");

右:使用 text.getStyleClass().addAll("table-text", "text");

without line of code with line of code

最佳答案

默认的TableCell 使用Label 来显示文本。在默认样式表中,标签的 -fx-text-fill 设置为 -fx-text-background-color。该值是使用梯形的查找颜色,因此文本在深色背景上为白色,在中等背景上为黑色(45% < 亮度 < 60%),在浅色背景上为灰色。要使自定义 TableCell 中的文本具有相同的颜色,只需将文本的 -fx-fill 属性设置为相同的查找颜色即可。请参阅默认样式表的代码(Java 8 中的 modena.css 或 caspian.css,如果您仍在使用 JavaFX 2.2),您可以从 jfxrt.jar 文件中提取该代码。

您可以按如下方式设置正确的文本颜色:

向您的文本添加样式类:

text = new Text(item.toString());
text.getStyleClass().add("table-text");

然后在外部样式表中执行

.table-text {
-fx-fill : -fx-text-background-color ;
}

(您也可以在文本上设置内联样式:

text.setStyle("-fx-fill: -fx-text-background-color;");

但更好的做法是将样式分解到单独的样式表中。)

关于使用文本类并选择行时 JavaFX TableColumn 字体颜色错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25181076/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com