JTable und java.lang.IndexOutOfBoundsException

Alenka87

Mitglied
Hallo zusammen,

ich kämpf grad mit einer Tabelle, die mir ständig das IndexOutOfBoundsException wirft:

Ich starte mein Programm - alles ok. Ich mache ne Suche - Ergebnisse wirden im Table angezeigt. Ich ändere Suchkrieterien - Ergebnisse werden angezeigt. ABER: Nachdem ich einmal die Sortierreihenfolge in irgendeiner Spalte geändert habe, läuft alles schief: Entweder bringt die Suche keine Ergebnisse (es werden immer noch die Objekte der letzten Suche angezeigt) oder es kommt zu diesem IndexOfBoundsException.

Datenbindnung funktioniert und im Debug habe ich auch überprüft: Es wird alles gefunden und auch an die Table weitergegeben. Es scheint was an der Anzeige nicht zu stimmen.

Eventuell was mit Eventhandling?

ich kopoert mal ein paar Ausschnitte aus dem Fehlerstack:

Java:
java.lang.IndexOutOfBoundsException: Index: 5, Size: 5
	at java.util.ArrayList.RangeCheck(ArrayList.java:547)
	at java.util.ArrayList.get(ArrayList.java:322)
	at com.jgoodies.common.collect.ArrayListModel.getElementAt(ArrayListModel.java:208)
	at com.jgoodies.binding.list.IndirectListModel.getElementAt(IndirectListModel.java:792)
	at com.jgoodies.binding.list.IndirectListModel.getElementAt(IndirectListModel.java:495)
...
at javax.swing.JViewport.paint(JViewport.java:747)
	at javax.swing.JComponent.paintChildren(JComponent.java:862)
	at javax.swing.JComponent.paint(JComponent.java:1038)
	at javax.swing.JComponent.paintChildren(JComponent.java:862)
	at javax.swing.JComponent.paint(JComponent.java:1038)
	at javax.swing.JComponent.paintChildren(JComponent.java:862)
	at javax.swing.JComponent.paint(JComponent.java:1038)
	at javax.swing.JViewport.paint(JViewport.java:747)
	at javax.swing.JComponent.paintChildren(JComponent.java:862)
	at javax.swing.JComponent.paint(JComponent.java:1038)
	at javax.swing.JComponent.paintChildren(JComponent.java:862)
	at javax.swing.JComponent.paint(JComponent.java:1038)
	at javax.swing.JComponent.paintChildren(JComponent.java:862)
	at javax.swing.JComponent.paint(JComponent.java:1038)
	at javax.swing.JViewport.paint(JViewport.java:747)
	at javax.swing.JComponent.paintChildren(JComponent.java:862)
	at javax.swing.JComponent.paint(JComponent.java:1038)
	at javax.swing.JComponent.paintChildren(JComponent.java:862)
	at javax.swing.JComponent.paint(JComponent.java:1038)
	at javax.swing.JComponent.paintChildren(JComponent.java:862)
	at javax.swing.JComponent.paint(JComponent.java:1038)
...
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:785)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:713)
	at javax.swing.RepaintManager.seqPaintDirtyRegions(RepaintManager.java:693)
	at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:125)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Das Schlüsselwort ist hier wahrscheinlich der EDT... und ich denkmal mit dem Repaint der Tabelle läuft dann was schief.
Hab aber auch schon folgendes probiert:

Java:
@com.jgoodies.application.listener.PropertyChangeListener
	public void onTableItemsChanged() {
//		table.revalidate();
//		table.repaint();
		tableElementsChangesHandling();
	}

	private void tableElementsChangesHandling(){
		SwingUtilities.invokeLater(new Runnable() {

			@Override
			public void run() {
				table.revalidate();
				table.repaint();

			}
		});
	}

das hat mich aber auch nicht weiter gebracht.:noe:


Hat vllt jemadn ne idee?????? ???:L
 
Fehler soll im Code liegen?

Irgendwo an der Stelle, wo die Daten in die Tabelle geladen werden?

Ich hätte gerne mehr gepostet, aber der ganze Code, der zu dem Fall gehört ist in zig Klasse verteilt, kämpfe selbst drum, da durchzublicken.
Ich versuche aber was zusammen zu kratzen,w as ich hier posten könnte
 

Neue Themen


Zurück
Oben