📅  最后修改于: 2023-12-03 15:24:12.517000             🧑  作者: Mango
在 JavaFX 中,TableView 是一个常用的控件,它允许用户以表格的形式展示数据。当用户选中其中的一行时,我们可以通过修改该行的样式来改变选中行的颜色。
下面是一个如何在 JavaFX TableView 中设置选中行颜色的代码演示:
我们可以创建一个样式文件,来设置选中行的样式。在该样式文件中,我们可以使用 -fx-background-color 属性来设置背景色,来达到改变行颜色的目的。
.table-row-cell:selected {
-fx-background-color: #d1d1d1;
}
// 创建一个样式表对象
String css = getClass().getResource("table-view.css").toExternalForm();
scene.getStylesheets().add(css);
// 获取 TableView 的选择模式,设为 SINGLE
table.getSelectionModel().setSelectionMode(SelectionMode.SINGLE);
// 添加单元格选择监听器
table.getSelectionModel().selectedItemProperty().addListener((obs, oldSelection, newSelection) -> {
if (newSelection != null) {
// 获取选中行的索引
int selectedIndex = table.getSelectionModel().getSelectedIndex();
// 获取选中行的单元格
TablePosition<?,?> pos = table.getSelectionModel().getSelectedCells().get(0);
// 获取选中行的某列单元格对象
TableColumn col = pos.getTableColumn();
// 获取选中行的某列单元格的值
Object data = col.getCellData(newSelection);
// 设置选中行的样式
table.setRowFactory(tv -> new TableRow<>() {
@Override
protected void updateItem(Object item, boolean empty) {
super.updateItem(item, empty);
if (getIndex() == selectedIndex) {
setStyle("-fx-background-color: #d1d1d1");
} else {
setStyle("");
}
}
});
}
});
在以上代码中,我们首先获取 TableView 的选择模式,设为 SINGLE。然后添加单元格选择监听器,当用户选中一行时,获取选中行的索引和某列单元格的值。最后,通过设置 setRowFactory 来覆盖每一行的样式,从而达到设置选中行颜色的目的。
以上就是如何在 JavaFX TableView 中设置选中行颜色的详细介绍。如果你还有其他关于 JavaFX TableView 的问题,可以查看 JavaFX 官方文档来获取更多信息。