Darstellungsproblem mit JTable

Ich habe ein spezielles TableModel für eine JTable programmiert, um ganz einfach Einträge in der Reihenfolge nach oben bzw nach unten verschieben zu können.
Das Problem dabei ist, dass die interne ArrayList des TableModel korrekt umsortiert wird, die Darstellung in der JTable jedoch extakt gleich bleibt! Auch die Methode revalidate() hilft hier nicht (Die funktioniert nur wenn Einträge hinzugefügt bzw entfernt werden) :frowning:

fireTableDataChanged(); im Model

Du musst noch die TableModelEvents feuern.

@SlaterB
fireTableDataChanged() hab ich schon probiert, funzt nicht!

Das geht wie? :confused:

[QUOTE=christoph]
Das geht wie? :confused:[/QUOTE]
mit fireTableDataChanged() :wink:

naürlich könnte man auch auf so schräge Ideen kommen, wie in einem anderen TableModel Daten zu ändern als dem, welches in der GUI angezeigt wird,
aber das wäre dann langsam Rätsel raten,

poste ein Beispielprogramm mit Ablaufbeschreibung und jeder kann den Fehler in wenigen Minuten sehen

Es gab weder einen Fehler, noch hatte die Methode fireTableDataChanged() eine Auswirkung.

So funktionierts jetzt:

private void moveUpSelectedRows() {
		DynamicTableModel workModel = (DynamicTableModel) this.workTable.getModel();
		
		int[] rows = this.workTable.getSelectedRows();
		workModel.moveRowsUp( rows );
		this.workTable.clearSelection();
		for ( int row : rows ) {
			if ( --row >= 0 )
				this.workTable.addRowSelectionInterval( row, row );
		}
		
		// Tabelle neu zeichnen
		workModel.fireTableRowsUpdated( 0, workModel.getRowCount() );
	}```

Konnte den Code gestern nicht posten, da ich ihn nur im Büro habe. Trotzdem danke für eure Hilfe! :)

[QUOTE=christoph]Es gab weder einen Fehler, noch hatte die Methode fireTableDataChanged() eine Auswirkung.

So funktionierts jetzt:

private void moveUpSelectedRows() {
		DynamicTableModel workModel = (DynamicTableModel) this.workTable.getModel();
		
		int[] rows = this.workTable.getSelectedRows();
		workModel.moveRowsUp( rows );
		this.workTable.clearSelection();
		for ( int row : rows ) {
			if ( --row >= 0 )
				this.workTable.addRowSelectionInterval( row, row );
		}
		
		// Tabelle neu zeichnen
		workModel.fireTableRowsUpdated( 0, workModel.getRowCount() );
	}```[/QUOTE]

Konnte den Code gestern nicht posten, da ich den Code nur im Büro habe. Trotzdem danke für eure Hilfe! :)