2016-12-06 11 views
0

Ich versuche, Namen (Zeichenfolgen) in einem ListView innerhalb von JavaFX mit einem einfachen Ereignishandler auf einer Schaltfläche anwenden, die Eingabe von TextFields. Alle Felder scheinen zu funktionieren und richtig, es tut nur Update in der ListenansichtDynamisch Aktualisieren eines ListView von einem TextField (JavaFX)

private ListView<String> manifestList; 
    manifestList = new ListView<>(); 
    manifestList.setId("List"); 
    manifestList.getSelectionModel().setSelectionMode(SelectionMode.SINGLE); 

Listview hinzufügen Methode:

public void addtoList(String manifestlist){ 
    manifestList.getItems().add(manifestlist); 
    } 

For-Schleife, die Textfelder für die Eingabe erzeugt (I vorgegeben habe es name1, name2 usw. zu testen)

for(i = 0;i < editname.length;i++){ 
    editname[i] = new TextField("Name" + i);  
    } 

Button-Handler den Text von Textfeldern zur Listenansicht hinzufügen (es gibt 16 Textfelder)

test ist der Variablenname für die Klasse, von der ich die add-Methode aufrufe, in der sich die Listenansicht befindet. Die Schaltfläche, die die add-Methode aufruft, befindet sich in einer anderen Szene/Klasse.

Ich kann nicht richtig herausfinden, was hier falsch läuft, ich habe den Wert der Textfelder zur Konsole gedruckt und sie drucken gut - aber sie nicht in die ListView aktualisieren.

Ich habe versucht, die add-Methode mit einer voreingestellten Zeichenfolge in der Listenansicht und das ist gut hinzugefügt.

Jede Hilfe/Tipps wäre großartig, danke.

+2

Was ist "Test"? Es wäre viel einfacher, das Problem zu diagnostizieren, wenn Sie ein vollständiges Beispiel veröffentlichen: siehe So erstellen Sie ein [MCVE]. –

+0

Hey, thanks - test ist der Variablenname für die Klasse, von der ich die Methode add anrufe, in der sich die Listenansicht befindet. Die Schaltfläche, die die Methode add aufruft, befindet sich in einer anderen Szene/Klasse. – dan6657

+0

Ich werde versuchen, auch ein minimales Beispiel zu erstellen – dan6657

Antwort

2

Sie einen globalen ObservableList Name es zum Beispiel items:

//create an ObservableList 
ObservableList<String> items = FXCollections.observableArrayList(); 

es dann in einer Weise, dass jedes Update auf dem ObservableList zurückreflektiert wird zu ListView<String> manifestList;

manifestList.setItems(items); 

Jetzt alle Zeit Sie möchten ein neues Element zu der ListView fügen Sie es auf der ObservableList. So können Sie Methode geändert werden:

public void addtoList(String manifestlist){ 
    items.add(manifestlist); 
    } 

Werfen Sie einen Blick auf die Links unten:

JAVAFX ListView chatting

und das Tutorial von Oracle Bro:

http://docs.oracle.com/javafx/2/ui_controls/list-view.htm

+0

Das ist eine großartige Idee, und ich habe es implementiert, aber es scheint nicht zu aktualisieren der ListView innerhalb der Szene GUI. Allerdings drucke ich ListView.getitems zur Konsole und die richtigen Werte werden gespeichert (name1 name2 name3) .. das gleiche mit der beobachtbaren Liste. – dan6657

+0

@ dan6657 Sehen Sie sich den Kommentar von Sedrick Jefferson an. Die 'ListView' ist synchron mit den Werten von' ObservableList' – GOXR3PLUS

+0

@ dan6657 Sie müssen ein vollständiges Beispiel in Ihrer Frage veröffentlichen, das das Problem demonstriert. Sonst können Menschen nur blind raten, was Sie falsch machen. Wenn alles andere in Ihrem Code korrekt war, würde der Code, den Sie bereits veröffentlicht haben, funktionieren. Erstelle ein [MCVE]. –

Verwandte Themen