jRuby 的 Float 在 JTable 单元格中表示

发布于 2024-09-02 03:14:45 字数 230 浏览 4 评论 0原文

我需要以 jTable 格式表示浮点数。 当我执行 tbl.model.add_row [obj, 1.3524632478].to_java 时,obj 表示为 to_s 方法的返回值,但 float 则不然。重写 float 的 to_s 方法不会执行任何操作。 我希望浮点数的格式如下 浮点类 def to_s sprintf("%.2f", 自我) 结尾 结束 在我所有的桌子上。

I need to represent floats in jTable formatted.
When I do tbl.model.add_row [obj, 1.3524632478].to_java, obj is represented as it's to_s method's return value, but float do not. Overriding float's to_s method does nothing.
I want floats to be formatted like this
class Float
def to_s
sprintf("%.2f", self)
end
end

in all my tables.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

2024-09-09 03:14:45

我猜测这是由于默认的 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)

I would surmise that it's due to the default TableCellRenderer used calling java.lang.Float.toString(some_float) rather than some_float.to_s. So in addition to what you've already done with Float's to_s, add these:

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)
土豪 2024-09-09 03:14:45

当行被矢量化时,Ruby 类会转换为 Java 类。我在java的Float类中添加了to_s方法,它就OK了

Ruby classes are converted to java classes when rows being vectorized. I added to_s method to java's Float class and its OK

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文