我需要用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
在我的所有表格中。
答案 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