2016-10-17 15 views
1

Ich verwende tableview in JavaFX, um List<Contact> anzuzeigen.JavaFX: Text statt booleschem Wert anzeigen (true/false)

Für Initialisierungsfunktion des Reglers werden die Tableview Spalten List<Contact> wie folgt binded:

sprintName.setCellValueFactory(new PropertyValueFactory<Contact, String>("name")); 
importStatus.setCellValueFactory(new PropertyValueFactory<Contact, Boolean>("imported")); 
enddate.setCellValueFactory(new PropertyValueFactory<Contact, String>("endDate")); 

Allerdings möchte ich in für Spalte imported statt true/false der Text imported/new

Ist es möglich, anzuzeigen JavaFX oder muss ich den Typ imported zu String ändern?

Antwort

3

eine Zellfabrik (zusätzlich zu dem Wert der Zelle ab Werk) Verwendung:

importStatus.setCellFactory(tc -> new TableCell<Contact, Boolean>() { 
    @Override 
    protected void updateItem(Boolean item, boolean empty) { 
     super.updateItem(item, empty); 
     setText(empty ? null : 
      item.booleanValue() ? "imported" : "new"); 
    } 
}); 

die Cell class documentation für allgemeine Informationen über die Zelle Rendering Mechanismus finden.

+0

Sorry für meine späte Antwort, habe ich versucht, Ihren Ansatz, aber eine andere Fehlermeldung an: 'Die Art der setCellValueFactory (Callback , ObservableValue >) ist fehlerhaft wo S, T-Typ-Variablen sind: S erweitert Objekt deklariert in der Klasse Table T erstreckt Objekt in der Klasse deklariert Table inkompatible Typen: schlechte Rückgabetyp in Lambda-Ausdruck > kann nicht ' –

+0

@ ti.voodoo ObservableValue umgewandelt werden Haben Sie die verwirren Methode Ich habe ('setCellFactory (...)') für die Methode aufgerufen, die Sie bereits haben ('setCe llValueFactory (...) '). Wie ich in der Antwort sagte, brauchen Sie beide. –

+0

Sorry, mein Schlechter. Es funktionierte! Vielen Dank! –

Verwandte Themen