JavaFX ObservableList aktuell halten

Xanond

Mitglied
Hallo,
ich programmiere momentan ein kleines Programm in dem in ein TableView mit 3 Spalten und entsprechendem Inhalt habe:
(ID,Name,Anzahl).
Des Weiteren lese ich die Werte aus für die Tabelle aus einer Datei aus (in ArrayList welche ich dann zu einer ObservableList mache) und befülle die Tabelle damit, was auch schon funktioniert.

Zu meiner Frage: Ich möchte über die GUI noch weitere Werte hinzufügen, also dass die Wete sofort in der Tabelle angezeigt werden. Dafür möchte ich nur ein einziges Eingabefeld benutzen für den Namen, die ID lasse ich in einer anderen Klasse automatisch ermitteln und die Anzahl soll immer am Anfang auf 0 stehen.
Das alles in der normalen ArrayList bzw in die Datei hinzuzufügen klappt ja schon aber ich weiß nicht wie ich es der ObservableList sagen soll. Bisher hab ich es mit Liste.add(new Objekt()) probiert was mir aber ein komplett falsches Ergebnis bringt.
Wie lässt sich das beheben?

Danke schon mal im Voraus :)
 

SeriousD0nkey

Bekanntes Mitglied
Was meinst du genau mit "komplett falsches Ergebnis" bringt? Soweit ich weiß, reicht es nicht aus, das Element einfach der ObservableList hinzuzufügen. Klappen müsste es, wenn du die Items der Tabelle entfernst und anschließend wieder die aktualisierte Liste hinzufügst. Ob es eine bessere Möglichkeit gibt weiß ich gerade nicht, ich hab das bisher immer so gemacht.
 

Xanond

Mitglied
Er schreibt nichts von dem was ich ihm gegeben habe in die Tabelle ich werds aber mal so probieren wie du es beschrieben hast danke.
 

Xanond

Mitglied
Hat funktioniert danke.
Hätte aber noch ne ganz kleine Frage kannst du/irgendwer mir sagen wie ich den Inhalt der Tabelle, also wenn ich z.B. auf eine Spalte klicke, diesen Spalteninhalt in einem Textfeld anzeigen zu lassen.
Bsp.:
Ich klicke auf eine Spalte und dann kommt der inhalt der in der Spalte mit dem namen steht in meinem Textfeld.
 

dzim

Top Contributor
Hm. Ich habe irgendwie Probleme deiner Satzstruktur zu folgen, Xanond... Nehme nicht an, das Deutsch deine Muttersprache ist, was? (Was jetzt kein Vorwurf sein soll!)

Ich hab schon nicht verstanden, warum in deiner initialen Beschreibung deine Tabelle nicht befüllt hat werden sollen.
Warum?
Du gibt der TableView die Items mittels #setItems-Methode, die eine ObservableList verlangt. Diese List ist eine "sticknormale" Collection. Also wenn du auf dieser #add(Object) machst, und Object dem generischen Typen der TableView entspricht, muss das Objekt auch gerendert werden. Sofort.

An den Inhalt der Spalte kommst du über direkt entweder über den hier beschrieben Vorgang:
http://stackoverflow.com/questions/17388866/javafx-tableview-getting-selected-items
Java:
Object object = tableview.getSelectionModel().getSelectedItem();
oder wenn du nur auf die Events hören möchtest:
http://stackoverflow.com/questions/...te-listener-for-selection-of-row-in-tableview
Java:
tableview.getSelectionModel().selectedItemProperty().addListener((obs, oldSelection, newSelection)->{
    if(newSelection !=null){
        // do something, e.g. print in Label or so
    }
});
 

Xanond

Mitglied
Sry war etwas hektisch :p
Aber danke für deine Antwort, hat soweit auch funktioniert.
Aber ich möchte nur auf eine Spalte zugreifen.Der Listener den du mir in der ersten Lösung verlinkt hast zeigt mir ja alles an was ich anklicke, also auch die iID meiner Werte wen ich nur die iID anklicke.Ich möchte aber das mir, egal wo ich in der Zeile hinklicke nur mein Name im Textfeld angezeigt wird.
Hast du da auch eine kleine Lösung parat? Ich kapier den Listener noch nicht so ganz.
 

dzim

Top Contributor
Der Listener geht auf die Auswahl in der Tabelle, in der Regel ist das die gesamte Zeile, bzw. das dahinter stehende Objekt, dass die Spalten dieser Zeile befüllt.
Übrigens ist es recht hilfreich, wenn man als Entwickler zwei Sachen kann:
- etwas English, denn viele Hilfen etc. findet man primär in dieser Sprache und
- auf Google/Bing Suchen können
;)

Google: "javafx tableview get selected cell"
http://stackoverflow.com/questions/21988598/how-to-get-selected-tablecell-in-javafx-tableview

Java:
TablePosition tp = tablev.iewgetFocusModel().getFocusedCell(); // keine Ahnung 
tview.edit(tp.getRow(), tp.getTableColumn()); // nur bei CellEditor

Ich vermute, mit der Colum kannst du nun aus dem Objekt hinter dem Aufruf
tableview.getSelectionModel().getSelectedItem()
die entsprechenden Daten aus deinem Model laden.

Ein anderer Weg würde mir auf die Schnelle auch nicht einfallen.

Schau vielleicht auch noch mal hier, was die API dazu sagt:
https://docs.oracle.com/javase/8/ja...ontrol/TableView.TableViewSelectionModel.html
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Element aus comboBox mit observableList löschen AWT, Swing, JavaFX & SWT 3
J Java FX NullPointerException, ObservableList wird in View nicht angezeigt.. AWT, Swing, JavaFX & SWT 34
D ObservableList Werte hinzufügen AWT, Swing, JavaFX & SWT 7
missy72 JavaFX TableView / TableColumn / ObservableList / zwei Werte in einer Zelle AWT, Swing, JavaFX & SWT 2
missy72 JavaFX ObservableList in einer ArrayList speichern. AWT, Swing, JavaFX & SWT 7
M Muss man die ObservableList aktualisieren? AWT, Swing, JavaFX & SWT 3
G Bekomme ResultSet mittels ObservableList nicht ins TableView AWT, Swing, JavaFX & SWT 25
D JavaFX Listview mit observableList AWT, Swing, JavaFX & SWT 6
J ObservableList wirft exception beim zweiten füllen. AWT, Swing, JavaFX & SWT 4
F JavaFX In SampleController ObservableList zu ListView hinzufügen AWT, Swing, JavaFX & SWT 0
D NullPointerException observableList AWT, Swing, JavaFX & SWT 4
K JavaFX ObservableList + Fenster AWT, Swing, JavaFX & SWT 6
D JavaFX observablelist löschen AWT, Swing, JavaFX & SWT 3
F JavaFX ObservableList -- warum funktioniert das so.... AWT, Swing, JavaFX & SWT 3
D Swing JGoodies: SelectionInList / ObservableList hört nicht auf Veränderungen in den Items AWT, Swing, JavaFX & SWT 1
G Zuletzt aktives Fenster, vor dem aktuell aktiven AWT, Swing, JavaFX & SWT 2
M Swing jTable: aktuell angesehne Einträge um Infos erweitern AWT, Swing, JavaFX & SWT 7
jueki Aktuell eingestellten Filter aus einem JFileChooser abfragen. AWT, Swing, JavaFX & SWT 5
M JTable zeigt daten nicht aktuell an AWT, Swing, JavaFX & SWT 4
M JavaFX Abstand zwischen AnchorPane und Labels in dem HBox halten AWT, Swing, JavaFX & SWT 1
berserkerdq2 Kann ich ein Rechteck mittig im Fenster halten, egal wie ich die Bildschirmgröße verändere? AWT, Swing, JavaFX & SWT 3
B JavaFX Bilder in einem Gewissen bereich halten AWT, Swing, JavaFX & SWT 1
K JavaFX Linie immer in der Mitte der Szene halten AWT, Swing, JavaFX & SWT 12
P Liste mit Datenobjekt synchron halten AWT, Swing, JavaFX & SWT 2
G JavaFX Sub-Fenster im Vordergrund halten AWT, Swing, JavaFX & SWT 5
B Event Handling jButton gedrückt halten als mehrmaliges Drücken interpretieren AWT, Swing, JavaFX & SWT 4
E JSlider synchron halten AWT, Swing, JavaFX & SWT 4
H Swing Den Button einer JToolBar gedrückt halten AWT, Swing, JavaFX & SWT 9
M JFrame im Vordergrund halten AWT, Swing, JavaFX & SWT 4
L AWT KeyListener, Taste gedrückt halten AWT, Swing, JavaFX & SWT 12
K button gedrückt halten AWT, Swing, JavaFX & SWT 4
A Dialog im Vordergrund halten AWT, Swing, JavaFX & SWT 41

Ähnliche Java Themen


Oben