Swing GUI und weiter Thread gibt Problem

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
 
Hi takidoso,
das reordering ist sowieso in diesem Fall nicht relevant, da ich nach einer Sekunde das TableModel aktualisiere und somit die Tabellenanordnung zurückgesetzt wird.
Hab das reordering abgestellt und jetzt funktioniert ertmal alles.
Besten Dank für deine Hilfe.
Wenn ich etwas mehr Zeit habe, werd ich das ganze nochmal durchgehen und überarbeiten.

Gruß Niles
 
Zurück