TableView ObservableList 改变行样式
TableView ObservableList change row style
我需要更改第 6 列中包含字母 'N' 的行的颜色,我见过很多示例,但 ObservableList 没有,我需要这样做。
在 'FOR' 中,我控制 table 的大小,在 'IF' 中,我检查第 6 列中包含字母 'N' 的所有行是否更改了整行颜色。
@FXML private TableView<ObservableList> table;
for(int i = 0; i< table.getItems().size(); i++){
if(table.getItems().get(i).get(6).toString().equalsIgnoreCase("N")){
//table.get.get(i).setStyle("-fx-background-color: yellow"); //NOT FOUND
}
}
在 table 上使用行工厂:
public class MyControllerClass {
@FXML
private TableView<ObservableList<Object>> table ; // TODO: use a more appropriate type than Object
public void initialize() {
table.setRowFactory(tv -> new TableRow<ObservableList<Object>>() {
@Override
protected void updateItem(ObservableList<Object> row, boolean empty) {
super.updateItem(row, empty);
if (row != null && row.get(6).toString().equalsIgnoreCase("N")) {
setStyle("-fx-background-color: yellow;");
} else {
setStyle("");
}
}
});
}
// ...
}
我需要更改第 6 列中包含字母 'N' 的行的颜色,我见过很多示例,但 ObservableList 没有,我需要这样做。
在 'FOR' 中,我控制 table 的大小,在 'IF' 中,我检查第 6 列中包含字母 'N' 的所有行是否更改了整行颜色。
@FXML private TableView<ObservableList> table;
for(int i = 0; i< table.getItems().size(); i++){
if(table.getItems().get(i).get(6).toString().equalsIgnoreCase("N")){
//table.get.get(i).setStyle("-fx-background-color: yellow"); //NOT FOUND
}
}
在 table 上使用行工厂:
public class MyControllerClass {
@FXML
private TableView<ObservableList<Object>> table ; // TODO: use a more appropriate type than Object
public void initialize() {
table.setRowFactory(tv -> new TableRow<ObservableList<Object>>() {
@Override
protected void updateItem(ObservableList<Object> row, boolean empty) {
super.updateItem(row, empty);
if (row != null && row.get(6).toString().equalsIgnoreCase("N")) {
setStyle("-fx-background-color: yellow;");
} else {
setStyle("");
}
}
});
}
// ...
}