fireTableDataChanged klappt nicht

ricosta

Mitglied
Hallo zusammen,

ich bin noch ein Anfänger was Java angeht. Hab bislang durch lesen und probieren/verzweifeln gelernt. Jetzt hab ich ein Problem, das ich selber nicht mehr lösen kann. Ich hoffe ihr könnt mir helfen und ich mich verständlich ausdrücken.

1. Ich habe eine JTable und die Daten werden über ein AbstractTableModel gelesen.
Die Daten für das Model kommen aus einer einer Methode getGamePlan(), die wieder auf eine MySQL DB zugreift.

2. Dann mache ich eine Änderung in der DB (umschreiben zweier int Werte) und stoße ein fireTableDataChanged an in der Methode updateGamePlan();
Das klappt noch wunderbar.

3. Dann mache ich noch eine Änderung in der DB (umschreiben genau der selben int Wert) und rufe wieder updateGamePlan() auf.

Jetzt erhalte ich einen Fehler: ArrayIndexOutOfBounds -1 bei dem Versuch getValueAt(.....)
Nachdem ich mir eine Ausgabe reingebastelt habe, hab ich gesehen das er da versucht mit row = -1 zu arbeiten. Wie kann das sein?

Vermutlich hats jetzt fast keiner Verstanden aber bitte fragt nach oder sagt was ihr an Code braucht um den Fehler finden zu können.

Vielen Dank und Grüsse

Java:
TMS_Functions func = new TMS_Functions();
static String[] gamePlanHeader = {"Heim", "Gast", "Ergebnis1", "Ergebnis2", "Gruppe"};
static String[][] gamePlanData;

Methode getGamePlanData():
Java:
	private void getGamePlanData(){
		gamePlanData = func.getGamePlan();
	}

Methode getGamePlan():
Java:
	public String[][] getGamePlan(){
		numberOfRows = getTableSize("gameplan");

		data = new String[numberOfRows][5];
		
		try {
			db = new TMS_Database();
			ResultSet rs = db.query("select team1, team2, goal1, goal2, group_name from gameplan");

			int i = 0;
			for (; rs.next();){

				for (int j = 1; j <= 5; j++){
					data[i][j-1] = rs.getString(j);
				}

				i++;
			}
			return data;
		} catch (Exception e) {
			logger.error("Konnte Spielplan nicht auslesen");
			return data;
		}
	}

TableModel:
Java:
	class modelGamePlan extends AbstractTableModel{
		private static final long serialVersionUID = 1L;

		public int getColumnCount() {
			return gamePlanHeader.length;
		}

		public int getRowCount() {
			return gamePlanData.length;
		}

		public String getColumnName(int col) {
			return gamePlanHeader[col];
		}

		public Object getValueAt(int row, int col) {
			logger.info("row: " + row);
			logger.info("col: " +col);
			return gamePlanData[row][col];
		}

		public boolean isCellEditable(int row, int col) {
			return false;
		}
	}

Und zu guter letzt noch der Fehler:
Java:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1
	at com.tms.TMS_GuiMain$modelGamePlan.getValueAt(TMS_GuiMain.java:287)
	at javax.swing.JTable.getValueAt(JTable.java:2686)
	at com.tms.TMS_GuiMain$SelectionListener.valueChanged(TMS_GuiMain.java:328)
	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:167)
	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:147)
	at javax.swing.DefaultListSelectionModel.fireValueChanged(DefaultListSelectionModel.java:194)
	at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:388)
	at javax.swing.DefaultListSelectionModel.changeSelection(DefaultListSelectionModel.java:398)
	at javax.swing.DefaultListSelectionModel.removeSelectionIntervalImpl(DefaultListSelectionModel.java:559)
	at javax.swing.DefaultListSelectionModel.clearSelection(DefaultListSelectionModel.java:403)
	at javax.swing.JTable.clearSelection(JTable.java:2080)
	at javax.swing.JTable.clearSelectionAndLeadAnchor(JTable.java:2088)
	at javax.swing.JTable.tableChanged(JTable.java:4433)
	at javax.swing.table.AbstractTableModel.fireTableChanged(AbstractTableModel.java:280)
	at javax.swing.table.AbstractTableModel.fireTableDataChanged(AbstractTableModel.java:182)
	at com.tms.TMS_GuiMain.updateGamePlan(TMS_GuiMain.java:260)
	at com.tms.TMS_GuiMain$ButtonListener.actionPerformed(TMS_GuiMain.java:395)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
	at java.awt.Component.processMouseEvent(Component.java:6352)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
	at java.awt.Component.processEvent(Component.java:6117)
	at java.awt.Container.processEvent(Container.java:2085)
	at java.awt.Component.dispatchEventImpl(Component.java:4714)
	at java.awt.Container.dispatchEventImpl(Container.java:2143)
	at java.awt.Component.dispatchEvent(Component.java:4544)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4621)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4282)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4212)
	at java.awt.Container.dispatchEventImpl(Container.java:2129)
	at java.awt.Window.dispatchEventImpl(Window.java:2478)
	at java.awt.Component.dispatchEvent(Component.java:4544)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:635)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
 
S

SlaterB

Gast
der getValue()-Aufruf stammt anscheindend von deinem Code:
> at com.tms.TMS_GuiMain$SelectionListener.valueChanged(TMS_GuiMain.java:328)

wäre es nicht hochinteressant, diese Zeile 328 bzw. den ganzen Listener zu posten?
allgemein muss man damit rechnen dass SelectionEvents mit row -1 für Deselektion oder wer weiß was komisches kommt,
prüfe die row-Indexe die da kommen und frage nicht sofort den Value dazu ab,
also im Model sowieso, falls die JTable sowas komisches anfragt

vor allem aber in deinem SelectionListener als aktuelle Problemursache, wenn man mal den Weg dahin als unbeeinflussbar ansieht
 
Zuletzt bearbeitet von einem Moderator:

ricosta

Mitglied
Hallo,

danke erstmal für die Rückmeldung.

Was mich an der Sache so stutzig macht ist, das es für bestimmte aktionen immer funktioniert und für genau den einen Sachverhalt eben nicht.

Also, hier ist der SelectionListener. Ich hoffe der hilft bei der Fehlersuche.

Java:
	class SelectionListener implements ListSelectionListener {
		JTable table;

		SelectionListener(JTable table) {
			this.table = table;
		}
		public void valueChanged(ListSelectionEvent e) {
			if (e.getSource() == table.getSelectionModel() && table.getRowSelectionAllowed()) {

				updateGroupTable(table.getValueAt(table.getSelectedRow(),4).toString());

			} else if (e.getSource() == table.getColumnModel().getSelectionModel()
					&& table.getColumnSelectionAllowed()) {

				logger.warn("Unexpected Failure");
			}
		}
	}

Bei updateGroupTable ist die Zeile 328.

Vielen Dank und Grüsse
 

MySelV

Aktives Mitglied
Hi,

doch noch den Fehler gefunden:
In deiner Methode getValueAt() wird folgendes zurückgegeben:
Java:
gamePlanData[row][col];

Das Problem ist also: Die selectedRow bei deinem Aufruf von updateGroupTable ist "-1" - es ist quasi nix selektiert.

Grüße
 
Zuletzt bearbeitet:
S

SlaterB

Gast
was gibst da noch zu suchen, du hast
> table.getSelectedRow()
und das kann eben genau -1 sein, wenn gerade nix selektiert ist, auch in einer kurzen Zeitspanne zwischen zwei Selektionen,
dann kommt vielleicht wenig später noch ein Event und du kannst beim ersten ruhigen Gewissens nichts machen
 

ricosta

Mitglied
was gibst da noch zu suchen...
:)
Das sagst du so einfach. Ich habs noch nicht kapiert warum der Fehler auftritt.

Vielleicht kurz zum ablauf. Ich selektieren ein Zeile in der Tabelle, und klicke dann außerhalb der Tabelle auf einen Button der zuerst die Änderung in der DB macht und dann das Update aufruft.

Gilt beim klick auf den Button die Zeile noch als markiert? (Sie ist noch blau hinterlegt)

Grüsse
 
S

SlaterB

Gast
deine Beschreibung sagen nicht viel, vielleicht werden beim Update die Daten der Tabelle ausgetauscht,
dann ist ja logisch dass die Selektion nicht konstant bleibt,
aber was spielt das für eine Rolle?

der Listener kann doch ganz unabhängig von dem was drumherum passiert sinnvoll agieren,
das bedeutet dass du prüfst ob table.getSelectedRow() -1 ist und dann nicht das machst was du da machst
 

ricosta

Mitglied
Tut mir leid das die Beschreibungen etwas dürftig sind, aber ich hab alles gegeben. :eek:

Hab mein Problem jetzt durch das abfangen von row = -1 gelöst.

Danke euch beiden und schönen Abend.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J fireTableDataChanged() funktioniert nicht was tun? Java Basics - Anfänger-Themen 3
T Methode soll etwas ausrechnen und zurückgeben (klappt nd) hat wer eine Idee? Java Basics - Anfänger-Themen 11
Darkherobrine9 Import klappt nicht Java Basics - Anfänger-Themen 7
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
TeacherMrSSimon Schachspiel, Werte in Figur eintragen klappt nicht Java Basics - Anfänger-Themen 23
HolyFUT Input/Output Leerzeichen aus String entfernen - klappt nicht! Java Basics - Anfänger-Themen 13
F jsoup einloggen klappt nicht Java Basics - Anfänger-Themen 10
K In andere Zahlensysteme umwandeln, wann klappt immer der Trick mit log? Java Basics - Anfänger-Themen 6
nbergmann Umgebungsvariablen einstellen unter Windows 7 klappt nicht Java Basics - Anfänger-Themen 2
C Erste Schritte Insert Into klappt nicht Java Basics - Anfänger-Themen 6
O Klappt nicht: Ein Panel neu zeichnen Java Basics - Anfänger-Themen 3
L Resourcen laden klappt nicht Java Basics - Anfänger-Themen 2
L Variablen Einheiten umrechen klappt nicht Java Basics - Anfänger-Themen 16
I Schleifendurchlauf ab 2. Durchlauf klappt nicht Java Basics - Anfänger-Themen 10
J Objecte in TreeSet einfügen klappt nicht Java Basics - Anfänger-Themen 5
J Datei auslesen klappt nicht Java Basics - Anfänger-Themen 4
K Methoden Pause drücken klappt nur jedes 2. Mal Java Basics - Anfänger-Themen 6
S UserPref und Java Application klappt immer nicht. Java Basics - Anfänger-Themen 2
P Shape Zeichnen klappt nicht - einlesen der Breite/Höhe schon Java Basics - Anfänger-Themen 1
S clip.loop(Clip.LOOP_CONTINUOUSLY); stoppen klappt nicht! Java Basics - Anfänger-Themen 11
Z Lotto-Programm Wieso klappt das? Java Basics - Anfänger-Themen 8
J Erste Schritte Zweithöchster Wert eines Arrays herausfinden - warum klappt mein Code nicht? Java Basics - Anfänger-Themen 3
D Telefon programmieren klappt nicht. Java Basics - Anfänger-Themen 5
VfL_Freak Tastaturabfrage auf '@' klappt nicht :-( Java Basics - Anfänger-Themen 1
M Image Download klappt nicht mehr Java Basics - Anfänger-Themen 4
B Erste Schritte Vererbung klappt nicht Java Basics - Anfänger-Themen 24
M zufälliges Setzen von Schiffen in while klappt nicht immer Java Basics - Anfänger-Themen 3
S Date parsen klappt nicht richtig Java Basics - Anfänger-Themen 3
K RGB Wert Heller machen (Dunkler machen klappt) Java Basics - Anfänger-Themen 2
K Einlesen einer txt von BufferedReader klappt nicht wie gewünscht Java Basics - Anfänger-Themen 12
D Rekursiv Kombinationen ausgeben klappt nur bei einer Wiederholung Java Basics - Anfänger-Themen 4
H Runden klappt nicht Java Basics - Anfänger-Themen 10
S Dateien/LinkedList/StringBuffer - SOrtierung klappt nicht so ganz Java Basics - Anfänger-Themen 2
K CompareTo zwei mal benutzen klappt nicht. Java Basics - Anfänger-Themen 2
T Sortieren/Suche klappt nicht ganz (String Array) Java Basics - Anfänger-Themen 2
J Erste Schritte Bin ein Programm am schreiben klappt aber nicht und weis nicht warum Java Basics - Anfänger-Themen 20
F Dateien lesen klappt nicht Java Basics - Anfänger-Themen 2
Kenan89 Export klappt nicht Java Basics - Anfänger-Themen 2
K Serialisierung: speichern und auslesen, auslesen klappt nicht Java Basics - Anfänger-Themen 14
M Dividieren bei Grafischem Taschenrechner klappt nicht Java Basics - Anfänger-Themen 2
J Einem String-Array in einer for-Schleife Strings zuweisen - Klappt nicht in einer for-Schleife Java Basics - Anfänger-Themen 5
K Frame öffnen klappt nicht?! Java Basics - Anfänger-Themen 36
C Methoden Negativer Wert klappt nicht Java Basics - Anfänger-Themen 4
M Datei löschen, klappt nicht Java Basics - Anfänger-Themen 3
J Compiler-Fehler Eclipse .jar Export klappt nicht. Java Basics - Anfänger-Themen 17
A Oracle Verbindungsaufbau klappt nicht Java Basics - Anfänger-Themen 7
GianaSisters Erste Schritte Datei umbennen bzw verschieben klappt nicht Java Basics - Anfänger-Themen 6
Z Speichern in eine .txt klappt.. fast Java Basics - Anfänger-Themen 23
T pattern klappt nicht so Java Basics - Anfänger-Themen 6
U Automatenprüfung in Java implementieren — String Vergleich klappt nicht Java Basics - Anfänger-Themen 40
K Klassenumbenennung klappt nicht Java Basics - Anfänger-Themen 11
M Synchronized klappt nicht Java Basics - Anfänger-Themen 11
I .csv-Datei einlesen klappt aber kann nicht in String geschrieben werden!?!?! Java Basics - Anfänger-Themen 11
N Serialization, Laden klappt nicht wenn die Klasse geändert wurde Java Basics - Anfänger-Themen 3
D Jar klappt nicht trotz main Methode Java Basics - Anfänger-Themen 19
M Will Sudokus basteln - klappt net Java Basics - Anfänger-Themen 5
M methoden aufruf klappt nicht Java Basics - Anfänger-Themen 6
T Override klappt nochmal wie? Java Basics - Anfänger-Themen 3
I 1 Frame und mehrere Panels klappt nicht Java Basics - Anfänger-Themen 4
C SELECT klappt INSERT klappt nicht!!!??? Java Basics - Anfänger-Themen 3
Luk10 Aufrufen klappt nicht! Java Basics - Anfänger-Themen 7
A Quicksort, #Vergleiche zählen klappt nicht Java Basics - Anfänger-Themen 3
raptorrs Schreiben in Properties-File klappt nicht Java Basics - Anfänger-Themen 6
T JComboBox klappt nur ein- bis zweimal auf Java Basics - Anfänger-Themen 30
T Polymorphie:Überschreiben der Methode klappt nicht Java Basics - Anfänger-Themen 4
Gonzalez Eingabe des Benutzers mittels readLine()-Methode. Klappt in meinem Beispiel nicht! Java Basics - Anfänger-Themen 7
C .java in .class klappt nicht Java Basics - Anfänger-Themen 16
J Datenbankverbindung klappt doch nicht? IBM DB2 Java Basics - Anfänger-Themen 2
O JPanel einbinden klappt nicht Java Basics - Anfänger-Themen 5
R Fehlersuche - KeyListener, KeyAdaper - Nichts Klappt! Java Basics - Anfänger-Themen 2
B Strings aus Array einlesen klappt nicht Java Basics - Anfänger-Themen 5
J reverse array, klappt nicht ? Java Basics - Anfänger-Themen 3
L Leider klappt bei mir ein Befehl nicht Java Basics - Anfänger-Themen 4
G Unterverzeichnisse anlegen klappt nicht Java Basics - Anfänger-Themen 4
D Ausgabe klappt nicht Java Basics - Anfänger-Themen 9
1 JList Problem : Synchronisation mit Vector klappt nicht :( Java Basics - Anfänger-Themen 6
G EventHandling klappt nicht Java Basics - Anfänger-Themen 8
G JFreeChart und das Update(was nicht klappt). Java Basics - Anfänger-Themen 3
S Schleife klappt nicht Java Basics - Anfänger-Themen 5
G Vergleich klappt nicht Java Basics - Anfänger-Themen 3
J jar erstellen. Es klappt einfach nicht Java Basics - Anfänger-Themen 14
G JDK Installation klappt auf Vista nicht Java Basics - Anfänger-Themen 4
H import java.io.* klappt nich Java Basics - Anfänger-Themen 12
G Icon einfügen klappt nicht Java Basics - Anfänger-Themen 3
M String in textarea übernehmen klappt nicht Java Basics - Anfänger-Themen 13
M Insert into klappt nicht? Java Basics - Anfänger-Themen 7
V Insert into klappt nicht so ganz Java Basics - Anfänger-Themen 6
M Audioclip wiedergabe klappt nicht Java Basics - Anfänger-Themen 4
2 Aufruf einer Methode klappt nicht Java Basics - Anfänger-Themen 3
B JPasswordField *beep* klappt nich Java Basics - Anfänger-Themen 8
Y Main Klasse in Konsole ausführen klappt nicht Java Basics - Anfänger-Themen 7
T Plus-Operation beim Taschenrechner klappt nicht. Java Basics - Anfänger-Themen 7
U BufferedImages verschieben klappt nicht Java Basics - Anfänger-Themen 37
B textfeld mit enter auslesen klappt nicht Java Basics - Anfänger-Themen 12
D import java.utils.Scaner klappt nicht Java Basics - Anfänger-Themen 17
P Bestimmter befehl der nicht klappt Java Basics - Anfänger-Themen 5
P dynamisches Binden klappt nicht so recht Java Basics - Anfänger-Themen 7
D FileDIalog klappt. aber geladenes bild nicht angezeigt Java Basics - Anfänger-Themen 2
G Batch aufrufen klappt nicht mit Runtime Java Basics - Anfänger-Themen 5
G Inhalt Textfield in SQL Statement klappt nicht. Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben