JavaFX TableView mit Attributs der Modellreferenzerierung für die Spalte

lam_tr

Top Contributor
Hallo zusammen,

ich glaube die BEschreibung des Titels ist etwas verwirrend, aber vorhin beim Programmieren ist mir aufgefallen dass ich den gewünschten Wert nicht darstellen kann in einer TableView.

Beispiel: Ich habe die Getter und Setter zur übersichtshalber rausgelassen

Modellklasse:
Java:
Person{
  String name
  Car car
}

Java:
Car{
  String name
}

Java:
Controller{

  @FXML TableColumn<Person,String> nameCol;
  @FXML TableColumn<Person,String> carCol;

  private void initaliue(){
    nameCol.setCellValueFactory(new PropertyValueFactory<Person,String>("name"));
    // An der Stelle hängts, ich habe die Referenzierung des Cars hier mitgegeben, aber an sich will ich aber person.getCar().getName() anzeigen 
    carCol.setCellValueFactory(new PropertyValueFactory<Person,String>("car"));

}
}


Hoffe ihr könnt mir da weiterhelfen.

VIele Grüße
lam
 
Bin mir nicht sicher, aber ich glaube "name" und car müssen StringProperty, respektive ObjectProperty<Car> sein und du brauchst die speziellen Getter.

Bsp
Java:
public class Model {
 private StringProperty name = new SimpleStringProperty("");

 public String getName() {
  return name.get();
 }

 public void setName(String name) {
  this.name.set(name);
 }

 public StringProperty nameProperty() {
  return name;
 }
}

Code ohne Gewähr ;-)
 
Hallo dzim,

nein muss es nicht, aber für das Databinding wäre es besser gewesen.

Aber meine Frage ist, was ist wenn ich keine primitiven Datentypen in der Modelklasse benutze?
Geht es dann nicht?
 
Ah ok. Ich glaube, ich hatte das Problem zu JavaFX2-Zeiten schon mal. Ich glaube FX unterstützt leider nicht die Verwendung von POJOs dort. Wenn ich recht haben sollte, müsstes du also eine eigene CellFactory schreiben. Ich gebe zu, das ich die PropertyValueFactory nach meinen anfänglichen Problemen mit POJOs nie wieder angesehen habe und *immer* eigene Factories und Zellen und so geschrieben habe - ausser in wenigen Fällen.
 

Neue Themen


Zurück
Oben