Para submeter novas perguntas e respostas, acesse https://guj.com.br

Versão atual:

JavaFX - TableView - Como pintar linhas de acordo com seu valor

Eu quero saber como faço para pintar linhas específica em um tableView de acordo com seu valor por exemplo, eu tenho uma lista de pessoas que são exibidas nessa TableView:

Pessoa          Idade
João            15
José            26
Maria           17
Carlos          22

Eu quero que sejam pintadas as linhas que tenham pessoas com idade > 20 (ou seja, as linhas 2 e 4) como faço isso?

Tentei fazer isso:

public class PintaDocumento implements Callback<TableColumn<GenericDocumento, String>, TableCell<GenericDocumento, String>> {

    @Override
    public TableCell call(TableColumn<GenericDocumento, String> p) {
        return new TableCell<GenericDocumento, String>() {
            @Override
            protected void updateItem(String item, boolean empty) {
                super.updateItem(item, empty);

                @SuppressWarnings("unchecked")
                GenericDocumento doc = (GenericDocumento) this.getTableRow().getItem();

                if (doc.getDocumentoAnasin().equals("S")){
                    this.setStyle("-fx-background-color:lightgray");
                    this.setStyle("-fx-text-fill: blue;");
                }else{
                    this.setStyle("-fx-background-color:white");
                    this.setStyle("-fx-text-fill: black;");
                }

            }
        };
    }
}

e no initialize() do meu controller colocar isso:

colDocumentoChamada.setCellFactory(new PintaDocumento());

até conseguir fazer o this.setStyle() mas essa linha está retornando null:

GenericDocumento doc = (GenericDocumento) this.getTableRow().getItem();

Versões(3):

Ver a versão formatada

JavaFX - TableView - Como pintar linhas de acordo com seu valor

Comentário

new question