String aus JTable bzw. dem CellEditor wird nicht erkannt, wenn man einen Button drückt, bevor man die Cell deselektiert hat. Wie kann man das ändern?

...komplette Frage anzeigen

1 Antwort

Kannst du hierfür ein Beispiel bei steuern, sodass man eventuell verstehen könnte was du meinst?

So formuliert ist gar nicht klar was du meinen könntest.

Wird nicht erkannt

Wo? In der Im getValue? Im Renderer? Im Model?

wenn man einen Button drückt

was für ein Button? Was hat der für ein Event? Verändert das Event den Wert aus der Tabelle? Geht es nur darum, den Fokus der Tabelle zu verlassen? Ist der Button Teil der JTable?

Das ist alles sehr ungenau. Stell daher deine Frage etwas konkreter und steuere ein Beispiel zu deinem Problem bei, dass ausführbar ist.

Lade ein Beispiel via pastie.org oder pastebin.com hoch und ergänze die Frage dazu.

Ich hab die Lösung inzwischen gefunden.

Das Problem war folgendes:

Ich habe eineTabelle (3 Spalten, 8 Zeilen). In diese Tabelle konnte man ein paar Werte eingeben. Per Button wollte ich dann die erste Spalte auslesen und in einem String Array speichern. Das hat soweit funktioniert.

Das Problem war jedoch: wenn man noch im Cell Editor war (also gerade etwas eingegeben hat), dann den Button gedrückt hat, ohne vorher ein anderes Feld zu selektieren, dann war der Text aus genannten Zelle in dem Array nicht vorhanden bzw. es war einfach nur ein leerer String (""). Und ich brauchte lediglich einen Befehl, mit dem man den Fokus von einer Zelle der Tabelle nehmen kann, sodass der eingegebene Text auch wirklich in der Tabelle ist und nicht nur im Cell Editor.

1
@Eurocrafter

Verstehe. Schön dass du es lösen konntest. Bzw. war der Focus-Befehl nach dem du gesucht hast deine Lösung oder ist an sich noch etwas offen?

0
@KnusperPudding

Das beschriebene Problem mit dem Button habe ich gelöst :)

Ja, ein Problem habe ich immer noch. Und zwar habe ich in meinem Programm 2 verschiedene Tabellen. Wenn man in der ersten Tabelle in eine beliebige Zelle einen Wert eingibt, und dann eine Zelle in der anderen Tabelle doppelklickt, um dort auch einen Wert anzugeben (ohne zuvor die editierte Zelle der ersten Tabelle zu deselektieren), dann verschwindet der Text aus der Zelle der ersten Tabelle. Das muss ich irgendwie noch hinbekommen... also dass der Wert eines Zelleneditors in der Tabelle gespeichert wird, sobald man den Fokus auf eine Zelle einer ganz anderen Tabelle legt (oder generell, wenn man den Fokus auf irgendwas anderes als die editierte Zelle legt).

Der Befehl war etwas mit ....("terminateOnFocusLost", true);

damit wurde dann der Wert aus dem Zelleditor wirklich in der Tabelle gespeichert.

0
@Eurocrafter

Das sind die Klassischen Probleme mit Java-Swing.  Mit dem Focus-Lost Event der JTable ist das nicht abfangbar?

Sofern du noch ganz frisch bei deiner Applikation bist, und ggf. die Möglichkeit hast umzusteigen, würde ich dir eher zu JavaFX und dem Tableview raten... da hast du so ein quatsch eigentlich nicht...

0

Was möchtest Du wissen?