Hallo,
ich habe da mal eine Frage:
Und zwar habe ich 2 Buttons, die sowohl zu einer JTable eine Zeile hinzufügen bzw. entfernen, sowohl einen neuen Tab in einer TabbedPane hinzufügen bzw. entfernen.
Wenn man den Button zum Entfernen sehr schnell hintereinander drückt, dann gibts in der JTable eine Exception, weil versucht wird, im TableModel eine Zeile zu entfernen, die nichtmehr vorhanden ist, weil sie ja grade entfernt wurde.
Habe also im ActionListener des Buttons als ersten Befehl ein setEnabled(false) für den Button an sich gesetzt.
Das hat das Problem eigentlich auch behoben, aber (man glaubt es nicht) man kann den Button tatsächlich schneller drücken, als das setEnabled greift.
Gut, eine zusätzliche Abfrage beim Entfernen der Tabellenzeile hat das Problem dann ganz gelöst.
Nun bleibt für mich aber letzendlich die Frage:
Ich bin bisher davon ausgegangen, dass der erste Befehl im Actionlistener doch schneller greift, als ein weiterer Buttonklick. Dies scheint aber nicht so zu sein.
Lässt sich das Problem nicht irgendwie anders lösen?
ich habe da mal eine Frage:
Und zwar habe ich 2 Buttons, die sowohl zu einer JTable eine Zeile hinzufügen bzw. entfernen, sowohl einen neuen Tab in einer TabbedPane hinzufügen bzw. entfernen.
Wenn man den Button zum Entfernen sehr schnell hintereinander drückt, dann gibts in der JTable eine Exception, weil versucht wird, im TableModel eine Zeile zu entfernen, die nichtmehr vorhanden ist, weil sie ja grade entfernt wurde.
Habe also im ActionListener des Buttons als ersten Befehl ein setEnabled(false) für den Button an sich gesetzt.
Das hat das Problem eigentlich auch behoben, aber (man glaubt es nicht) man kann den Button tatsächlich schneller drücken, als das setEnabled greift.
Gut, eine zusätzliche Abfrage beim Entfernen der Tabellenzeile hat das Problem dann ganz gelöst.
Nun bleibt für mich aber letzendlich die Frage:
Ich bin bisher davon ausgegangen, dass der erste Befehl im Actionlistener doch schneller greift, als ein weiterer Buttonklick. Dies scheint aber nicht so zu sein.
Lässt sich das Problem nicht irgendwie anders lösen?