MariusMeier
Mitglied
Hallo zusammen
Folgendes Szenario liegt vor: Habe eine Rezeptdatenbank mit verschiedenen Einträgen. Drücke ich jetzt auf den Button "Neues Rezept" sollte in der JTable alle Zeilen bis auf eine gelöscht werden. Selektiere ich jedoch den 3. Wert in der Zeile und lasse die Selektion auf dieser Spalte und drücke dann den Knopf "Neues Rezept" spuckt mir der Eclipse Compiler eine Fehlermeldung aus:
Vielleicht hat es noch etwas mit der Funktion tableChanged() zu tun. Kann es sein dass wenn die Zelle selektiert ist, diese nicht zum löschen zur Verfügung steht?
MFG Marius Meier
Folgendes Szenario liegt vor: Habe eine Rezeptdatenbank mit verschiedenen Einträgen. Drücke ich jetzt auf den Button "Neues Rezept" sollte in der JTable alle Zeilen bis auf eine gelöscht werden. Selektiere ich jedoch den 3. Wert in der Zeile und lasse die Selektion auf dieser Spalte und drücke dann den Knopf "Neues Rezept" spuckt mir der Eclipse Compiler eine Fehlermeldung aus:
- ActionPerformed failure!
- java.lang.ArrayIndexOutOfBoundsException: -1
Code:
public void tableChanged(TableModelEvent e) {
String word = (String) tabelleRezept.getValueAt(tabelleRezept.getRowCount()-1,tabelleRezept.getColumnCount()-1);
System.out.println(word);
try {
if(word.length() > 0) {
model.addRow(new Object[] {"","",""});
}
}
catch(Exception ex) {
System.out.println("Method tableChanged failure!");
System.out.println(word);
}
}
public String TableData_to_String(JTable tb) {
String tbData = "";
//Row count
for(int row=0;row<tb.getRowCount();row++) {
//Column count
for(int column=0;column<tb.getColumnCount();column++) {
String getData = (String) tb.getValueAt(row, column);
tbData = tbData + getData + "::";
}
}
return tbData;
}
class ButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e){
try {
if(e.getSource() == insertRezept) {
if(tabelleRezept.isEditing()) {
tabelleRezept.getCellEditor().stopCellEditing();
}
String tbData = TableData_to_String(tabelleRezept);
MySQL mysqlnow = MySQL.getInstance("jdbc:mysql://localhost/Rezepte","root","gMx@hotmAil");
String sql = "INSERT INTO reznicola (id,rezeptname,rezeptzutaten,rezeptanweisungen) VALUE('1','" + RezeptName.getText() + "','" + tbData + "','" + introductions.getText() + "')";
mysqlnow.insertData(sql);
//Update JList with new values
String sqlJList = "SELECT rezeptname FROM reznicola";
String[] ObjRList = mysqlnow.selectRezeptname(mysqlnow.doQuery(sqlJList));
RezeptListe.setListData(ObjRList);
}
else if(e.getSource() == newRezept) {
RezeptName.setText("");
introductions.setText("");
//If value is selected, deselect
if(tabelleRezept.isEditing()) {
tabelleRezept.clearSelection();
}
int NumberOfRow = tabelleRezept.getRowCount();
System.out.println(NumberOfRow);
for(int i=0;i<NumberOfRow;i++) {
model.removeRow(0);
//System.out.println(i);
}
model.addRow(new Object[] {"","",""});
}
else if(e.getSource() == deleteRezept) {
MySQL mysqlnow = MySQL.getInstance("jdbc:mysql://localhost/Rezepte","root","gMx@hotmAil");
}
else if(e.getSource() == updateRezept) {
MySQL mysqlnow = MySQL.getInstance("jdbc:mysql://localhost/test","root","gMx@hotmAil");
String sql = "";
}
}
catch(Exception ex) {
System.out.println("ActionPerformed failure!");
System.out.println(ex);
}
}
}
Vielleicht hat es noch etwas mit der Funktion tableChanged() zu tun. Kann es sein dass wenn die Zelle selektiert ist, diese nicht zum löschen zur Verfügung steht?
MFG Marius Meier