takidoso
Erfahrenes Mitglied
Niles hat gesagt.:Also wenn ich 'period' auf 0 setze wird das dtm nur einmal ausgelesen und ich kann die Tabellen verschieben, ohne dass eine Exception geworfen wird.
Es liegt wahrscheinlich daran, dass wenn ich den Spaltenkopf anfasse und verschieben will die GUI versucht das dtm zu aktualisieren, es aber nicht richtig kann, da ich den spaltenkopf noch gedrückt halte.
Deshalb wollte ich das Drag'en unterbinden.
Gruß Robin
Nach meinem Verständnis müsste diese Problematik behoben sein, wenn die Übergabe der Daten an das TableModel im Thread stattfindet, der für die Bearbeitung der Event-Queue zuständig ist, wie ich schonmal schrieb.
Da Du offenbar mit invokeLater() nicht zurechtkommst, da du es erfolglos ausprobiert hattest (was mich jedoch verwundert), kannst Du ca 2 verschiedene Dinge tun.
entweder Du sperrst das verschieben der Spalten, das erreichst Du mit der routine
jTable.getTableHeader().setReorderingAllowed(false);
was aber schade wäre, denn dies sind nette Features für Anwender
Oder Du stellst einfach sicher, dass das Model tatsächlich im Thread, der die Event-Queue behandelt, seinen Refresh erhält.
das kann man entweder durch das invokeLater() (s.o.) tun oder aber wenn das zusammensuchen der Daten auf der DB nicht zu lange dauert mittels des javax.swing.Timer.
an Deiner Stelle würde ich es erstnomal mit invokeLater() versuchen und wenn das nicht geht herausfinden auf welchem Thread nun wirklich dein TableModel-Refrsch stattfindet. das tust du mit Ausgabe von System.out.println(Thread.getCurrentThread()); oder so ähnlich.
viel Spaß
Takidoso