在TableView中更改TableColumn背景,同时保留交替的行颜色,可以通过自定义单元格工厂来实现。
首先,创建一个自定义的TableCell类,继承自TableCell,并重写updateItem方法。在updateItem方法中根据需要设置TableColumn的背景颜色。同时,根据行号的奇偶性设置交替行的颜色。
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.paint.Color;
public class CustomTableCell<S, T> extends TableCell<S, T> {
@Override
protected void updateItem(T item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null) {
setText(null);
setGraphic(null);
setBackground(null);
} else {
setText(item.toString());
setGraphic(null);
// 设置TableColumn的背景颜色
TableColumn<S, T> tableColumn = getTableColumn();
tableColumn.setStyle("-fx-background-color: #F0F0F0;");
// 设置交替行的颜色
TableView<S> tableView = getTableView();
int rowIndex = getIndex();
if (rowIndex % 2 == 0) {
setBackground(null);
} else {
setBackground(null);
}
}
}
}
然后,在TableView中使用自定义的TableCell类作为单元格工厂。可以通过setCellFactory方法来设置。
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.stage.Stage;
public class TableViewExample extends Application {
@Override
public void start(Stage primaryStage) {
TableView<Person> tableView = new TableView<>();
TableColumn<Person, String> nameColumn = new TableColumn<>("Name");
nameColumn.setCellValueFactory(cellData -> cellData.getValue().nameProperty());
TableColumn<Person, Integer> ageColumn = new TableColumn<>("Age");
ageColumn.setCellValueFactory(cellData -> cellData.getValue().ageProperty());
// 设置单元格工厂
nameColumn.setCellFactory(column -> new CustomTableCell<>());
ageColumn.setCellFactory(column -> new CustomTableCell<>());
tableView.getColumns().addAll(nameColumn, ageColumn);
// 添加数据
tableView.getItems().addAll(
new Person("John", 25),
new Person("Jane", 30),
new Person("Bob", 35)
);
primaryStage.setScene(new Scene(tableView, 400, 300));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
这样,就可以在TableView中更改TableColumn的背景颜色,同时保留交替的行颜色。请注意,以上示例中的CustomTableCell类只是一个简单的示例,您可以根据实际需求进行修改和扩展。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云