Swing CellEditor bei Fokusverlust Bearbeitung beenden?!

ElJarno

Bekanntes Mitglied
Hi Leute,
hab das generelle Problem, dass wenn ich den Wert im CellEditor(Tabelle) beabeite und dann auf ein Button klicke der Wert nicht übernommen wird. Erst wenn das CellEditing korrekt beendet wird, wenn man woanders in der Tabelle hinklickt wird der Wert übernommen. Hat jemand ne Lösung für dieses Problem, dass halt jegliche CellEditoren in der Tabelle beendet werden wenn man woanders hinklickt, egal wohin.

Gruß Jan
 

ElJarno

Bekanntes Mitglied
Jo den Tipp, hab ich auch gefunden, funktioniert auch wenn ch dann z.B in ein TxtField wechsle oder woanders fokussiere. Nur beim Betätigen von Buttons reagiert das immer noch nicht.
 

eRaaaa

Top Contributor
Mhm, anscheinend wird das nicht von jeder JRE unterstützt wie ich eben las (bei mir tuts :) )
Was du aber noch machen könntest ist, im ActionListener des Buttons(den du ja vermutlich hast) so etwas wie
[c]table.getCellEditor().stopCellEditing();[/c] aufzurufen.
 

ymene

Bekanntes Mitglied
Ich hatte in der Tat auch das gleiche Problem. Meine ToolbarButtons haben den Editiervorgang auch nicht beendet, um haben dann ggfls. die View gewechselt und die Änderungen wurden nicht übernommen. Um das zu lösen, hab ich wie eRaaaa bereits beschrieben hat einfach:
Java:
table.getCellEditor().stopCellEditing();
in einer eigens dafür geschriebenen Action aufgerufen die andere Actionobjekte wrappen konnte. Wenn ich also vor Buttonklick erst prüfen wollte, ob in der Tabelle noch editiert wird, hab ich nen Konstrukt gebildet ala:

Java:
button.setAction( new StopCellEditingAction( new ChangeViewAction() ) );

Vielleicht nicht die eleganteste Lösung, aber ich fands sehr zweckmäßig und immer noch halbwegs gut nachzuvollziehen.
 

KrokoDiehl

Top Contributor
Ich vermute stark, dass es damit zusammenhängt, dass es zwei Arten von Fokus-Events gibt (mal von GAINED und LOST abgesehen), nämlich "normale" und "temporäre". Die temporären werden ausgelöst, wenn man z.B auf einen Button klickt, denn hier bekommt der Button für die Zeit des Klicks kurz den Fokus, welcher danach aber sofort wieder zurückspringt. Ich denke beim CellEditor werden solche temp. Events nichts behandelt.
Ich hatte zumindest vor einiger Zeit auch ähnliche Probleme, aber finde die Lösung spontan nicht mehr.
Vielleicht wäre folgender FocusListener auch einen Versuch wert:
Java:
meineTabelle.addFocusListener(new FocusAdapter()
{
    @Override
    public void focusLost( FocusEvent event )
    {
        CellEditor edt = meineTabelle.getCellEditor();
        if (edt != null)
        {
            edt.stopCellEditing();
        }   
    }
});
 

ElJarno

Bekanntes Mitglied
Die stopCellEditing() Methode in den ButtonActionListener aufzurufen ist mir auch schon in den Sinn gekommen, nur jetzt jeden Button mit diesen Einschub zu versehen war mit erst mal ein wenig mühselig, werd mir mal irgendwas praktisches ausdenken. Naja hätt ja sein können dass es einen ähnlichen trick wie
Java:
table.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
dazu gäbe.

Danke für die Tipps

Gruß Jan
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
F JPanel Celleditor AWT, Swing, JavaFX & SWT 8
S Frage zu Jtable / CellEditor AWT, Swing, JavaFX & SWT 1
F jTree.startEditingAtPath(path); funktioniert nicht bei eigenem CellEditor? AWT, Swing, JavaFX & SWT 8
K Swing CellEditor für einzelne Zellen AWT, Swing, JavaFX & SWT 2
1 Swing Spaltenbreite and CellEditor- Komponente anpassen AWT, Swing, JavaFX & SWT 4
1 CellEditor mit ComboBox richtig beenden AWT, Swing, JavaFX & SWT 4
E Swing CellEditor mit Combobox durch Tastatureingabe editieren?! AWT, Swing, JavaFX & SWT 3
E Swing JComboBox als CellEditor in JTable zeigt Elemente nicht sofort an AWT, Swing, JavaFX & SWT 5
lumo SWT CellEditor & Popup AWT, Swing, JavaFX & SWT 3
lumo SWT Table CellEditor - knifflig AWT, Swing, JavaFX & SWT 35
D SWT JFace TableViewer nächster CellEditor nach Enter aktivieren AWT, Swing, JavaFX & SWT 5
dzim JFace ListViewer-Einträge mit CellEditor? AWT, Swing, JavaFX & SWT 3
R JTable: ploetzlich ist der CellEditor weg? :( AWT, Swing, JavaFX & SWT 4
G CellEditor - Kein "Textfeld" AWT, Swing, JavaFX & SWT 6
G JTable mit JComboBox als Celleditor, selectedRow falsch! AWT, Swing, JavaFX & SWT 3
M CellEditor und CellRenderer für eigene Klasse AWT, Swing, JavaFX & SWT 4
B JTable Vector Exception bei eigenem CellEditor AWT, Swing, JavaFX & SWT 3
V CellEditor der nur Eingaben int 1-9 und "null" er AWT, Swing, JavaFX & SWT 11
M CellEditor für individuelle Zellen in JTable AWT, Swing, JavaFX & SWT 3
J CellEditor per Button beenden AWT, Swing, JavaFX & SWT 2
T Swing JFrame setResizable: Kurzer Fokusverlust? AWT, Swing, JavaFX & SWT 3
I Prüfen einer Eingabe in JTextField, Fokusverlust AWT, Swing, JavaFX & SWT 2
Z Bearbeitung von csv Dateien AWT, Swing, JavaFX & SWT 13
G Bild nach Bearbeitung schwarz AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben