Idiomatische Tabellenzellen-Renderer in Scala

Ich hatte das traditionelle Java verwendetTableCellRenderer Ansatz zur Bereitstellung der Renderer in ascala.swing.Table wo ich meine renderer auf dem tisch deklariereTableColumnModel. Der Code dafür sah so aus:

val myTable = new Table {
  lazy val tcm = initColumnModel
  peer.setColumnModel(tcm)

  override 
  protected def rendererComponent(sel: Boolean, foc: Boolean, row: Int, col: Int) = {
    //GET THE VALUE FROM THE TableModel
    val value = model.getValueAt(
                        peer.convertRowIndexToModel(row), 
                        peer.convertColumnIndexToModel(col))
    //GET THE RENDERER FROM THE ColumnModel
    val renderer = tcm.getColumn(col).getCellRenderer
    //WRAP IN A COMPONENT
    Component.wrap(renderer.getTableCellRendererComponent(
                        peer, 
                        value, 
                        sel, 
                        foc, 
                        row, 
                        col).asInstanceOf[JComponent])
   }
}

Leider scheint dies ein Speicherverlust zu haben - vermutlich, weil ich für jede Zelle in der Tabelle eine neue Komponenteninstanz erstelle (für ~ 30k Zeilen). Auf jeden Fall, wenn ich meinen Scala-Tisch durch einen ersetzeJTable (genau das gleiche verwendenSäule undDaten Modelle) mein Speicherleck geht weg.

Meine Frage ist daher, welche Art von Code die Leute verwenden, wenn sie das überschreibenrendererComponent Methode unter der Annahme, dass man eigene CellRenderer hat?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage