JavaFX Message in TableView

kevin9r

Aktives Mitglied
Hallo liebes Forum,
leider wieder eine Frage zum befüllen von einem TableView 😕. Bitte nagelt mich nicht fest, es scheitert vermutlich an den Grundlagen, ich komme mit der Objektorientierung irgendwie noch nicht so zu recht..

Ich habe mir ein TableView erstellt mit drei Spalten: Betreff, Email und Datum:

Java:
      TableView<Message> table = new TableView<Message>();
      // Create column UserName (Data type of String).
      TableColumn<Message, String> Betreff //
              = new TableColumn<Message, String>("Betreff");
      // Create column Email (Data type of String).
      TableColumn<Message, String> Email//
              = new TableColumn<Message, String>("Email");
      // Create column FullName (Data type of String).
      TableColumn<Message, String> Datum//
              = new TableColumn<Message, String>("Datum");

Jetzt habe ich eine Methode, welche mir aus meinem Postfach alle ungelesenen Emails abruft und in einem Message[] zurückgibt. Jetzt möchte ich gerne die ObservableList erstellen.
Java:
private ObservableList<Message> getMailList() throws MessagingException {
      Message[] array=CheckingMails.getMail();

Und ich weiß hier einfach nicht weiter. Ich habe mir viele Beispiele angeschaut aber dort wurde dann immer die ObservableList per Hand mit Strings befüllt. Ich will ja im Nachhinein auch wissen, wenn ich beispielsweise auf einen Eintrag in der Liste klicke und auf löschen klicke welche Email da ausgewählt ist. Hat jemand da eine Idee und kann mir etwas auf die sprünge helfen?

Vielen Dank!🙄
 
Manchmal sollte man einfach schlafen gehen und am nächsten Morgen weiter machen... 🙄 Habs jetzt gelöst.
Die Lösung ist ziemlich simple, für die Leute die vielleicht mal das Problem haben:

Java:
private ObservableList<Message> getMailList() throws MessagingException {
Message[] array=CheckingMails.getMail();

ObservableList<Message> messages = FXCollections.observableArrayList();

for(int i=0; i< array.length; i++){
          messages.add(array[i]);
      }
return messages;
}
Evtl. muss man dann noch den folder öffnen und wieder schließen.

Jetzt habe ich aber noch zwei andere Fragen...
Bei:
Java:
 table.getColumns().addAll(Betreff, Email, Datum);

erhalte ich den Fehler: A generic Array of TableColumn <Message, ?> is created for varargs parameter.
Was bedeutet dies? Also die Daten werden auf jeden fall trotz des Fehlers in der Tabelle angezeigt.

Das Problem das ich jetzt noch habe ist in der From Spalte. Hier bekomme ich keine Emailadressen sondern lediglich soetwas: [Ljavax.mail.internet.InternetAdress;@c1c434]
Wieso passiert das? Gibt es da eine Lösung für?

Vielen Dank!
 
Manchmal sollte man einfach schlafen gehen und am nächsten Morgen weiter machen... 🙄 Habs jetzt gelöst.
Die Lösung ist ziemlich simple, für die Leute die vielleicht mal das Problem haben:
Die Lösung ist eigentlich sogar noch einfacher:

Java:
private ObservableList<Message> getMailList() throws MessagingException {
Message[] array=CheckingMails.getMail();
ObservableList<Message> messages = FXCollections.observableArrayList(array);
return messages;
}


Das Problem das ich jetzt noch habe ist in der From Spalte. Hier bekomme ich keine Emailadressen sondern lediglich soetwas: [Ljavax.mail.internet.InternetAdress;@c1c434]
Wieso passiert das? Gibt es da eine Lösung für?
Das ist die Ausgabe von toString von InternetAdress, das ist dort nicht überschreiben und gibt deshalb nichts sinnvolles zurück.
Nutzt du schon eine CellValueFactory?
 

Zurück
Oben