Hi Leute,
bin jetzt in der Testphase von meinem Programm noch auf einen seltsamen Bug gestoßen.
Über ein MenuItem z.B. soll aus einem JInternalFrame - aus dem jTable der Wert aus einer Zeile ausgelesen werden.
Jetzt kommt es natürlich vor, das gar keine Zeile ausgewählt ist und trotzdem die Methode aufgerufen wird. Um alles unter Kontrolle zu halten, habe ich natürlich einen try catch block mit einem JOptionPane(zur Warnung) drumrum gebaut. Soweit so gut, alles bestens.
Jetzt habe ich ein zweites JInternalFrame, welches auch über ein MenuItem angesprochen werden kann, ebenfalls mit jTable etc. und die Methoden funktionieren bis ins Detail genauso wie im ersten Fall. Nur hier wird die Exception nicht abgefangen, das JOptionPane kommt als Warnung aber in der Konsole bekomme ich 10-20 mal IndexOutofBoundsException. Das schlimmste dabei ist, das er nach dem catch die Methode sogar weiter ausführt statt anzuhalten.
Jetzt ein paar Codefragmente:
Die funktionierende Methode:
Die TableSelect Methode:
Die TableSelect Methode aus dem JInternalFrame:
Die kaputten Methoden:
TableSelectParts Methode:
Der eigentliche TableSelect:
Übersehe ich irgendeine Kleinigkeit?? Habe gestern 5 Stunden lang rumprobiert und mir jede Kleinigkeit angesehen - finde aber keinen Unterschied bzw. Grund für den Fehler. ???:L
Kann ich dem allgemein irgendwie entgehen? Kann man z.B. irgendwie prüfen ob überhaupt irgendetwas im jTable selektiert wurde um die Methoden erst gar nicht auszuführen?
Danke schonmal, falls ihr den Nerv hattet das alles durchzulesen. :toll:
bin jetzt in der Testphase von meinem Programm noch auf einen seltsamen Bug gestoßen.
Über ein MenuItem z.B. soll aus einem JInternalFrame - aus dem jTable der Wert aus einer Zeile ausgelesen werden.
Jetzt kommt es natürlich vor, das gar keine Zeile ausgewählt ist und trotzdem die Methode aufgerufen wird. Um alles unter Kontrolle zu halten, habe ich natürlich einen try catch block mit einem JOptionPane(zur Warnung) drumrum gebaut. Soweit so gut, alles bestens.
Jetzt habe ich ein zweites JInternalFrame, welches auch über ein MenuItem angesprochen werden kann, ebenfalls mit jTable etc. und die Methoden funktionieren bis ins Detail genauso wie im ersten Fall. Nur hier wird die Exception nicht abgefangen, das JOptionPane kommt als Warnung aber in der Konsole bekomme ich 10-20 mal IndexOutofBoundsException. Das schlimmste dabei ist, das er nach dem catch die Methode sogar weiter ausführt statt anzuhalten.
Jetzt ein paar Codefragmente:
Die funktionierende Methode:
Java:
protected void toolEdit() {
try {
TableSelect();
} catch (Exception e1) {
JOptionPane.showMessageDialog(null,
"Sie haben offenbar kein \n"
+ "Gerät zur Bearbeitung selektiert?!");
Thread
.setDefaultUncaughtExceptionHandler(new errHandler());
}
//... Fenster wird aufgerufen etc.
}
Die TableSelect Methode:
Java:
public void TableSelect() {
gmng.TableSelect(); //gmng ist mein JInternalFrame
nummer = gmng.getNummer(); //hier wird die Variable aus dem jTable geschnappt
}
Die TableSelect Methode aus dem JInternalFrame:
Java:
public void TableSelect() {
nummer = jTableTools.getValueAt(jTableTools.getSelectedRow(), 0)
.toString();
}
Die kaputten Methoden:
Java:
protected void EditPart(){
try {
TableSelectParts();
} catch (Exception e) {
JOptionPane.showMessageDialog(null,
"Sie haben offenbar kein \n"
+ "Ersatzteil zur Bearbeitung selektiert?!");
Thread
.setDefaultUncaughtExceptionHandler(new errHandler());
}
// passiert genau das gleiche - ein Fenster wird aufgerufen
}
TableSelectParts Methode:
Java:
public void TableSelectParts(){
pmg.TablePartSelect(); //Mein anderes JInternalFrame
nummer = pmg.getPartnummer();
}
Der eigentliche TableSelect:
Java:
public void TablePartSelect() {
partnummer = jTableParts.getValueAt(jTableParts.getSelectedRow(), 0)
.toString();
}
Übersehe ich irgendeine Kleinigkeit?? Habe gestern 5 Stunden lang rumprobiert und mir jede Kleinigkeit angesehen - finde aber keinen Unterschied bzw. Grund für den Fehler. ???:L
Kann ich dem allgemein irgendwie entgehen? Kann man z.B. irgendwie prüfen ob überhaupt irgendetwas im jTable selektiert wurde um die Methoden erst gar nicht auszuführen?
Danke schonmal, falls ihr den Nerv hattet das alles durchzulesen. :toll: