Javafx TableView可观察列表更改行样式

Javafx TableView可观察列表更改行样式,javafx,tableview,javafx-8,javafx-2,Javafx,Tableview,Javafx 8,Javafx 2,我需要更改第6列中字母“N”的行的颜色,我看到了许多示例,但没有使用ObservableList,我需要这样做 在“FOR”中,我控制表的大小,在“IF”中,我检查第6列中包含字母“N”的所有行是否更改整行的颜色 @FXML private TableView<ObservableList> table; for(int i = 0; i< table.getItems().size(); i++){

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

在“FOR”中,我控制表的大小,在“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
                            }
        }
@FXML私有TableView表;
对于(int i=0;i
在表格上使用行工厂:

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

    // ...
}
公共类MyControllerClass{
@FXML
private TableView table;//TODO:使用比Object更合适的类型
公共无效初始化(){
table.setRowFactory(tv->new TableRow(){
@凌驾
受保护的void updateItem(可观察列表行,布尔空){
super.updateItem(行,空);
if(row!=null&&row.get(6.toString().equalsIgnoreCase(“N”)){
setStyle(“-fx背景色:黄色;”);
}否则{
设置样式(“”);
}
}
});
}
// ...
}

您应该避免使用原始类型:您应该使用
TableView
,而不是
TableView
。我不太了解重载的方法,我必须将该方法放在哪里才能影响表?谢谢@我不明白这个问题。您在控制器的
initialize()
方法中设置了行工厂,就像我在发布的答案中所做的那样。我已经在initialize()中输入了代码,它工作正常,非常感谢!!