Wie wird das Rendern von JTable-Zellen nach dem Bearbeiten der Zelle aufrechterhalten?

8

Ihr Kerle habt mir bei meiner letzten Frage in die richtige Richtung gezeigt und ich habe hier eine Art Erweiterung meiner ursprünglichen Frage:

Wie setze ich eine JTable? Spalte als String und als Double sortieren?

Da meine Preisspalte jetzt mit meinem benutzerdefinierten CellRenderer als $ ###, ## formatiert ist, habe ich jetzt auch einen JTextField-Editor für die Zelle eingerichtet. Die Bearbeitung der Zelle funktioniert einwandfrei, außer wenn der Wert aktualisiert wird, scheint das Zahlenformat, das in meinem benutzerdefinierten Renderer eingestellt ist, die Zelle nicht mehr zu formatieren (ich verliere die $ nach der Bearbeitung ist committed). Darf dieser Renderer die Zellen auch nach der ersten Anzeige der Daten nicht rendern?

Ich habe versucht, das Folgende ohne Glück zu benutzen:

%Vor%

Ich hatte gehofft, dass dies die Tabellen dazu zwingen würde, die Zellen mit dem benutzerdefinierten Renderer erneut zu validieren und neu zu streichen, um die neuen Werte zu rendern, aber das hat leider nicht funktioniert ...

Vermisse ich etwas ... Offensichtlich, aber was?

    
titanic_fanatic 08.04.2012, 22:26
quelle

1 Antwort

10

Wenn Ihr Editor zu dem Schluss kommt, dass die Methode editingStopped() der Tabelle den neuen Wert über getCellEditorValue() erfasst und im Modell zu setValueAt() verwendet. Das Modell wiederum sollte fireTableCellUpdated() enthalten, wodurch der vorgeschriebene Renderer aufgerufen wird. Die Standardeinstellung sollte ausreichen, um Number Formatierung zu verarbeiten. In anderen Fällen kann es sinnvoll sein, eine Instanz des Renderers als Editorkomponente zu verwenden. Dieses Beispiel zeigt eine typische Implementierung.

Nachtrag: Hier ist ein grundlegendes Beispiel mit den Standard-Editor und Renderer-Implementierungen.

Nachtrag: Dank hilfreichen Kommentaren von @mKorbel habe ich das Beispiel aktualisiert, um den Text der Zelle zur Bearbeitung auszuwählen, wie in @ camickrs Artikel Tabelle Wählen Sie alle Editor .

%Vor%     
trashgod 08.04.2012, 23:59
quelle