2017-06-06 27 views
2

Ich habe TableView und ich möchte etwas tun, wenn die Zelle den Fokus verliert. Ich habe die Zellenauswahl auf diesem TableView aktiviert und es hört nicht auf den verlorenen Zellenfokus. Ich versuchte es so:JavaFX: TableCell Fokus verloren

Es hört einfach nicht, wenn ich die Zelle abwählen (Strg + Klick). Was habe ich falsch gemacht oder wie kann ich auf einen verlorenen Fokus auf eine TableCell hören?

+1

Ist es Zelle * Fokus * Sie sind interessiert, oder Zelle * Auswahl *? –

+0

@James_D Ich interessiere mich für die Zellauswahl, um irgendwie auf die selectedCell zu hören, aber das Selektionsmodell hat keine 'selectedCellProperty'. Es wäre perfekt, wenn ich die ausgewählte Zelle irgendwie hören könnte (nicht fokussiert, vielleicht lag ich in der Frage falsch). Hast du eine Idee, wie es gemacht werden kann? – Sunflame

Antwort

0

ich dies mit:

TABLEVIEW.focusedProperty().addListener(new ChangeListener<Boolean>() { 
    @Override 
    public void changed(ObservableValue<? extends Boolean> arg0, Boolean oldPropertyValue, Boolean newPropertyValue) { 
     if (newPropertyValue) { 
      System.out.println("on focus"); 
     } else { 
      System.out.println("out focus"); 
     } 
    } 
}); 

Es funktioniert nur, wenn Sie eine andere wählbare Element wählen (nicht funktioniert beispielsKlick auf einen Fensterbereich).

+1

Sicher beobachtet das nur den Fokus auf die gesamte Tabelle, nicht auf einzelne Zellen. Z.B. Wenn sich der Fokus (oder die Auswahl) von einer Zelle zur anderen bewegt, wird Ihr Listener überhaupt nicht aufgerufen. –

+0

Ich habe auch diesen Weg versucht, aber es funktioniert nicht, wenn ich die Zelle abwählen möchte, bei '// doSomething' Teil möchte ich eine Schaltfläche aktivieren/deaktivieren, abhängig davon, ob die Zelle fokussiert ist oder nicht. Leider hilft mir das nicht :( – Sunflame

+0

Ja, das ist richtig. Es funktioniert nur, wenn Sie die Tabelle auswählen und dann – Developer66

Verwandte Themen