TableView ObservableList更改行样式

时间:2017-11-22 12:02:25

标签: javafx tableview javafx-8 javafx-2

我需要更改第6列中字母“N'”的行的颜色,我看过许多示例,但没有使用ObservableList,我需要这样做。

在' FOR'我控制了桌子的大小和“IF'我检查所有包含字母' N'在第6列中更改整个行颜色。

@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
                            }
        }

1 个答案:

答案 0 :(得分:2)

在桌子上使用行工厂:

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("");
                }
            }
        });
    }

    // ...
}