jRuby的Float代表JTable的单元格

时间:2010-05-18 09:21:39

标签: floating-point jtable jruby

我需要用jTable格式表示浮点数。 当我执行tbl.model.add_row [obj, 1.3524632478].to_java时,obj表示为to_s方法的返回值,但浮点数不表示。重写float的to_s方法什么都不做。 我希望浮动格式像这样格式化 class Float def to_s sprintf("%.2f", self) end end 在我的所有表格中。

2 个答案:

答案 0 :(得分:0)

我猜测这是因为默认的TableCellRenderer使用了调用java.lang.Float.toString(some_float)而不是some_float.to_s。因此,除了您已经使用Float的to_s所做的事情之外,还要添加以下内容:

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)

答案 1 :(得分:0)

当向量化的行时,Ruby类被转换为java类。我将to_s方法添加到java的Float类及其OK