Java 在JTable中显示金钱,但保留作为double排序的能力

Java 在JTable中显示金钱,但保留作为double排序的能力,java,swing,sorting,jtable,tablecellrenderer,Java,Swing,Sorting,Jtable,Tablecellrenderer,我有一个JTable,其中一列是以美元和美分表示的金额。我将这个TableColumn定义为一个Double,它正确地进行了调整,在排序时,它将其排序为Double,而不是字符串。这一切都很好。 我现在的问题是它会截断尾随的零。100.00显示为100,0.00显示为0,等等。我尝试了TableCellRenderer,但尽管这会导致money列显示尾随的零,但金额现在全部左对齐,JTable将其视为字符串。 我希望在显示中保留尾随的零,但也要保留数据类型,以便进行排序和右对齐。如果有更好的方法

我有一个JTable,其中一列是以美元和美分表示的金额。我将这个TableColumn定义为一个Double,它正确地进行了调整,在排序时,它将其排序为Double,而不是字符串。这一切都很好。 我现在的问题是它会截断尾随的零。100.00显示为100,0.00显示为0,等等。我尝试了TableCellRenderer,但尽管这会导致money列显示尾随的零,但金额现在全部左对齐,JTable将其视为字符串。
我希望在显示中保留尾随的零,但也要保留数据类型,以便进行排序和右对齐。如果有更好的方法,数据类型不需要是double

我找到了完美的链接。这是第一次奏效。只需复制代码


如果你想精确地处理金钱,你应该把它表示为美分和整数,如果你必须处理大量的金钱,你应该把它表示为大整数。浮点数会导致问题,因为它们会受到


这将保留排序功能,消除尾随零的问题,提供所需的精度,并且使用自定义渲染器,可以在需要的位置获取小数点

很难说失败在哪里,因为自定义渲染器可以以任何方式渲染该值,并且它们不会影响模型的数据类型。我只是想说,这样其他阅读本文的人就不会认为自定义渲染器是错误的