📜  如何在 javafx tableview 中设置选定行颜色 - Java (1)

📅  最后修改于: 2023-12-03 15:24:12.517000             🧑  作者: Mango

如何在 JavaFX TableView 中设置选中行的颜色

在 JavaFX 中,TableView 是一个常用的控件,它允许用户以表格的形式展示数据。当用户选中其中的一行时,我们可以通过修改该行的样式来改变选中行的颜色。

下面是一个如何在 JavaFX TableView 中设置选中行颜色的代码演示:

1. 创建样式文件

我们可以创建一个样式文件,来设置选中行的样式。在该样式文件中,我们可以使用 -fx-background-color 属性来设置背景色,来达到改变行颜色的目的。

.table-row-cell:selected {
   -fx-background-color: #d1d1d1;
}
2. 加载样式文件
// 创建一个样式表对象
String css = getClass().getResource("table-view.css").toExternalForm();
scene.getStylesheets().add(css);
3. 设置 TableView 样式
// 获取 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 官方文档来获取更多信息。