JavaFX ViewTable mit einer LinkedList befüllen

kn0ch3nm4rc

Mitglied
Hallo,

ich versuche gerade eine ViewTable mit den Daten einer LinkedList zu befüllen.

Die LinkedList ist mit der Klasse "User" befüllt. Diese ist eine Superklasse und hat drei Unterklassen: Administrator, BusinessCustomer, PrivateCustomer.

Ich schaffe es jetzt soweit, dass in der LinkedList die Variablen der Superklasse "User" angezeigt werden können. Das funkioniert so:
Java:
name.setCellValueFactory((p) -> p.getValue().nameProperty());
tView.setItems(UserData.getUserList());

"name" ist dabei der Name der TableColumn welche ich über eine FXML Datei erstellt habe und "tView" der Name der ViewTable, ebenfalls über FXML erstellt.

Die Methode nameProperty returned einfach einen StringProperty der String Variable. Und mit UserData.getUserlist greife ich auf die LinkedList mit den Daten zu. Mein Problem ist jetzt ich kann nur auf die Variablen der Superklasse "User" zugreifen. Die Unterklassen besitzen noch viel mehr Variablen/getter-Methoden auf die ich zugreifen möchte bzw. in der ViewTable anzeigen lassen möchte.
Wie genau mach ich das?

Ich hatte schon mal ein ähnliches Problem bei dem mir hier sehr gut geholfen wurde. Da bin ich jedoch durch die Liste irritiert und habe dann mit
Code:
  if (user instanceof PrivateCustomer) {
geprüft welche Art von User also um welche Klasse es genau sich gehandelt hat um dann eben die Methoden dieser zu nutzen. Hier ist der Link zum Thread

Hoffe das Problem ist klar geworden, falls nicht gerne nachhaken. Mfg Marc
 
Problem hat sich erledigt. Hab es selbst hingekriegt. Für den Fall, dass jemand ein ähnliches Problem hat hier meine Lösung.
Java:
username.setCellValueFactory(param -> {
            String username = "";
            if (param.getValue() instanceof PrivateCustomer) {
                username = param.getValue().getUsername();
            }
            if (param.getValue() instanceof BusinessCustomer) {
                username = param.getValue().getUsername();
            }
            if (param.getValue() instanceof Administrator) {
                username = param.getValue().getUsername();
            }
            StringProperty usernameProperty = new SimpleStringProperty(username);
            return usernameProperty;
        });

username name der TableColumn über FXML erstellt.
Mit instanceof prüf ich wieder um welche Klasse es sich handelt um dann auf die getter-Methoden dieser zuzugreifen. Da diese nur Strings returnen ich aber ein ObservableString benötige caste ich die String username Variable auf eine StringProperty und returne diese dann.
 

Neue Themen


Zurück
Oben