Wie halten JTable Zelle rendering nach Zelle Bearbeiten
Euch waren so genial in Punkt mich in die richtige Richtung auf meine Letzte Frage und ich haben sozusagen eine Erweiterung meiner ursprünglichen Frage hier:
Wie man ein JTable-Spalte als String-und die Art, wie Doppelt?
So, ich habe jetzt meinen Preis Spalte formatiert als $###,##0.00 mithilfe meiner benutzerdefinierter Zellen-renderer, habe ich jetzt eine JTextField-Editor für die Zelle. Die Bearbeitung der Zelle funktioniert Prima, außer wenn der Wert aktualisiert wird, wird das Zahlenformat festlegen, in meine custom renderer scheint nicht mehr formatieren Sie die Zelle (ich bin verlieren die $ nach edit verpflichtet ist). Ist dieser renderer soll ja nicht zum Rendern der Zellen auch nach der ersten Anzeige der Daten?
Habe ich versucht, die folgenden mit kein Glück:
((AbstractTableModel) table.getModel()).fireTableDataChanged();
Ich hoffe, dass dieses zwingen würde, den Tisch zu revalidate und repaint die Zellen mit dem custom renderer zum Rendern der neuen Werte, aber dies hat leider nicht funktioniert...
Bin ich etwas fehlt... das ist klar, aber was?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Ihr editor schließt, wird der Tisch
editingStopped()
Methode speichert den neuen Wert übergetCellEditorValue()
und verwendet es, umsetValueAt()
im Modell. Das Modell, das im Gegenzug solltefireTableCellUpdated()
, die aufrufen, die vorgeschriebenen renderer. Die Verlängerung der Standard sollte genug, umNumber
Formatierung. In anderen Fällen kann es zweckmäßig sein, verwenden Sie eine Instanz der renderer als editor-Komponente; diese Beispiel zeigt eine typische Implementierung.Nachtrag: Hier ist ein einfaches Beispiel für die Verwendung der Standard-editor und renderer-Implementierungen.
Nachtrag: Dank der hilfreichen Kommentare von @mKorbel, ich habe aktualisiert das Beispiel wählen Sie die Zelle, die den text für die Bearbeitung, wie beschrieben in @camickr Artikel Tabelle Wählen, werden Alle Editor.
NumberFormatException
;cancelCellEditing()
wäre eine Allgemeine alternative.AbstractCellEditor
; ich war das versuchen zu nutzenDefaultCellEditor
. Ich sollte hinzufügen, dassDouble
kann nicht eine gute Wahl für die Währung. 🙂Number
Handhabung.