JavaFX TableView eine Zeile markieren

Battleju

Aktives Mitglied
Hi,
Ich entwickle gerade ein Programm bei dem eine tableview verwendet wird. Je nach Situation soll nun eine Zeile irgendwie optisch hervorgehoben werden. Nur irgenwie weiß ich so gar nicht wie das geht, weil es gibt ja(soweit ich recherchieren konnte) keine Möglichkeit den Style einer reihe zu ändern. Hat da jemand eine Idee und kann mir weiterhelfen?

Im Prinzip soll das so oder so ähnlich aussehen:
("state" ist die Klasse der Items in der tabelle)
Code:
public void setFocusOnTable(State actState){
        for(int i = 0; i < rules.getItems().size(); i++){
            System.out.println(i);
            State state = (State) rules.getItems().get(i);
            if(actState.equals(state)){
                //Hier soll dann die Zeile des Items "state" irgenwie hervorgehoben werden
            }
        }
    }
Vielen dank im voraus!
lg bttl
 
ich habe das ganze jetzt mithilfe des links von mihe7 gelöst. Vielen dank dafür!
Das ganze sieht jetzt so aus, dass das in dem Konstruktor der klasse steht, die Zugriff auf die tableview hat:
Code:
runController.getTableRules().setRowFactory(tv -> new TableRow<State>() {
            @Override
            public void updateItem(State item, boolean empty) {
                super.updateItem(item, empty) ;
                if (item == null) {
                    setStyle("");
                    System.out.println("no item");
                } else if (item.isActive()) {
                    setStyle("-fx-background-color: #2c84ff;");
                    System.out.println("found item");
                } else {
                    setStyle("");
                    System.out.println("item isnt active");
                }
            }
        });
Um styleklassen werde ich auch nicht drum herum kommen. Ich wollte das ganze "stylen" dann noch später machen. Vielen dank dzim, dass du mir dann gleich eine Erklärung dazu gezeigt hast 😀
 

Zurück
Oben