2010-05-18 11 views
0

J'ai besoin de représenter les flottants en format jTable. Lorsque je fais tbl.model.add_row [obj, 1.3524632478].to_java, obj est représenté comme étant la valeur de retour de to_s method, mais pas float. Remplacer la méthode to_s de float ne fait rien. Je veux que les flotteurs soient formatés comme ceci class Float def to_s sprintf("%.2f", self) end end dans toutes mes tables.Flottant de jRuby à représenter dans la cellule de JTable

Répondre

0

les classes Ruby sont converties en classes java lorsque les lignes sont vectorisés. J'ai ajouté la méthode to_s à la classe Float de java et son OK

0

Je suppose que c'est dû au TableCellRenderer par défaut utilisé appelant java.lang.Float.toString(some_float) plutôt que some_float.to_s. Donc, en plus de ce que vous avez déjà fait avec les to_s de flotteur, ajoutez-les:

class MyCellRenderer < Java::JavaxSwingTable::DefaultTableCellRenderer::UIResource 
    def setValue(value) 
     setText(value.nil? ? "" : value.to_s) 
    end 
end 
my_cell_renderer = MyCellRenderer.new 

# This to set it globally 
my_table.setDefaultRenderer(java.lang.Object, my_cell_renderer) 

# Or this to set it for specific columns only 
my_table.column_model.getColumn(0).setCellRenderer(my_cell_renderer)