user3832429
user3832429

Reputation:

JavaFX TableView cells remain empty

I am trying to implement a simple table with JavaFX TableView. The table and the columns are displayed but not the content. I read everything I could find on the topic but could not find the cause. Thank you for your help.

 ObservableList<DatensatzMitarbeiter> data = FXCollections.observableArrayList(
            new DatensatzMitarbeiter("1", "Jacob", "Minijob", "false"),
            new DatensatzMitarbeiter("2", "Isabella", "Vollzeit", "true"),
            new DatensatzMitarbeiter("3", "Ethan", "Teilzeit", "false"),
            new DatensatzMitarbeiter("4", "Emma", "Minijob", "false"),
            new DatensatzMitarbeiter("5", "Michael", "Minijob", "false")
            );
    //
    TableColumn<DatensatzMitarbeiter,String> spalte1 = new TableColumn<DatensatzMitarbeiter,String>("ID");
    spalte1.setCellValueFactory(new PropertyValueFactory<DatensatzMitarbeiter, String>("id"));
    //
    TableColumn<DatensatzMitarbeiter,String> spalte2 = new TableColumn<DatensatzMitarbeiter,String>("Nachname");
    spalte2.setCellValueFactory(new PropertyValueFactory<DatensatzMitarbeiter, String>("nachname"));
    //
    TableColumn<DatensatzMitarbeiter,String> spalte3 = new TableColumn<DatensatzMitarbeiter,String>("Status");
    spalte3.setCellValueFactory(new PropertyValueFactory<DatensatzMitarbeiter, String>("status"));
    //
    TableColumn<DatensatzMitarbeiter,String> spalte4 = new TableColumn<DatensatzMitarbeiter,String>("Admin");
    spalte4.setCellValueFactory(new PropertyValueFactory<DatensatzMitarbeiter, String>("admin"));
    //
    tabelle = new TableView<DatensatzMitarbeiter>();
    tabelle.setItems(data);
    tabelle.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
    tabelle.getColumns().add(spalte1);
    tabelle.getColumns().add(spalte2);
    tabelle.getColumns().add(spalte3);
    tabelle.getColumns().add(spalte4);

class DatensatzMitarbeiter
{
private String id;
private String nachname;
private String status;
private String admin;

DatensatzMitarbeiter(String id,
                     String nachname,
                     String status,
                     String admin)
{
    this.id = id;
    this.nachname = nachname;
    this.status = status;
    this.admin = admin;
}
String getId()
{
    return id;
}
String getNachname() 
{
    return nachname;
}
String getStatus()
{
    return status;
}
String getAdmin()
{
    return admin;
}   

}

Upvotes: 1

Views: 636

Answers (1)

James_D
James_D

Reputation: 209684

Make the get methods and the data model class public.

Alternatively, if you are using Java 8, avoid using the (somewhat legacy) PropertyValueFactory:

spalte1.setCellValueFactory(cellData -> new ReadOnlyStringWrapper(cellData.getValue().getId()));

(and similarly for the other columns).

Upvotes: 1

Related Questions