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
Methode getGamePlanData():
Methode getGamePlan():
TableModel:
Und zu guter letzt noch der Fehler:
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)