Auf geänderte Listen Reagieren

Guten Tag

Ich sitze hier an einer JavaFX View und habe gerade einwenig Mühe damit…

Ich erstelle mir eine Observable List die ich befülle:


	private ObservableList<Artikel> observableList = FXCollections.observableList(artikelliste);
	
//	private ObjectProperty<ObservableList<Artikel>> clients = new SimpleObjectProperty<ObservableList<Artikel>>();

	/**
	 * 
	 */
	public VerwArtikel() {
		// 99 Artikel definieren
		for (int i = 0; i < 100; i++) {
			observableList.add(new Artikel());
		}
	}
	
	/**
	 * Speichert einen Artikel der geändert wurde
	 */
	public void saveArtikel(int artNr, int hauptAbl1, int hauptAbl2, int hauptAbl3, int hauptAbl4, int hauptAbl5, int hauptAbl6,
			int hauptAbl7, int hauptAbl8) {

		observableList.get(artNr).setHauptablauf_1(hauptAbl1);
		observableList.get(artNr).setHauptablauf_1(hauptAbl2);
		observableList.get(artNr).setHauptablauf_1(hauptAbl3);
		observableList.get(artNr).setHauptablauf_1(hauptAbl4);
		observableList.get(artNr).setHauptablauf_1(hauptAbl5);
		observableList.get(artNr).setHauptablauf_1(hauptAbl6);
		observableList.get(artNr).setHauptablauf_1(hauptAbl7);
		observableList.get(artNr).setHauptablauf_1(hauptAbl8);

		observableList.add(new Artikel());
		
		System.out.println("liste gespeichert");
		
	}

	/**
	 * Gibt die Artikelliste zurück
	 * 
	 * @return Observablelist
	 */
	public ObservableList<Artikel> getClients() {
		return observableList;
	}```

Dies funktioniert einwandfrei. Nun möchte ich in der View informiert werden ob sich etwas an der Liste geändert hat. Um so den aktuellen Artikel anzuzeigen.

Wie muss ich den listener dazu gestalten?

Gruss und Danke schonmal

Naja du musst der Liste halt einen Listener hinzufügen. Geht mit addListener, sie implementiert schließlich das Interface Observable.

Kurze Anmerkung: den Kommentar “Speichert einen Artikel der geändert wurde” bei einer Methode save Artikel kannst du dir sparen, viel eher könntest du erklären warum du da 9 integers reinübergibst und dann für jedes einen “Hauptablauf” setzt - ich hab das mit Absicht so hölzern geschrieben damit verdeutlicht wird wie unsinnig der Code dort ohne Hintergrundwissen erscheint.

Vielen Dank bERtOr, du hast vollkommen recht… Werde das nochmals bearbeiten.

Ich hatte das mit dem Listener probiert, jedoch wahrscheinlich lief da was falsch… Ich werde es morgen nochmals testen.

Vielen Dank schonmal

anke für deinen Beitrag.
Aber darum geht es nicht. Ich habe zwar in der Tat mehrere JTables, die aber in verschiedenen Tabs einer JTabbedPane liegen.
Aus einer Datei lade ich mir Daten, die in die JTable des gerade aktiven Tabs geladen werden sollen. Die Datei ändert sich laufend und ich möchte per Mausklick auf einen Button die Daten des aktuellen Stands aus der Datei laden, in ein TableModel umformen und damit die JTable auf den neusten Stand bringen. Da die Daten in einem Vector aus Vectoren liegen, ersetze ich den Original-Vector (dataVector) eines DefaultTableModels.
Und immer wenn ich das mache, ändern sich auch die Spaltenbreiten meiner JTable auf die Default-Werte…
Nur, warum? Und wie kann ich das umgehen?