Java Swing中的数字格式问题

fdl0112 2010-03-09 03:47:59
在Java swing中编写表格JTable时遇到如下的问题:
在表格中想要把数字的小数点后保留六位,比如12.151000,包括尾数的0也要显示出来,但是在表格中却都自动地省略了,不知如何是好?然后我调用了NumberFormat来修改,使用了其中的setMinmumFractionDigit命令(不知道拼写对没,呵呵),但是这样的话最后的结果显示变成了字符串形式,不是数字形式了,而我又想按数字格式把所有数字按右对齐显示(字符串形式是左对齐)。所以如果格式化成功,结果就变成字符串形式左对齐了(不是我想要的);如果使其按数字形式右对齐,又无法保证统一的数字格式。想请教大家,如何才能在JTable表格中使得数字既能统一格式,又能右对齐排列显示。
此外,还想请教大家,如果数字过大时,能不能同时限制有效位数呢,比如我看到表格中得出这样的数:2.354468978794894E15,能不能只是显示2.354469E15呢?
希望大家给我想个能同时满足我小数点位数、整数位数、表格中右对齐显示的方法。需要用那些命令组合呢?谢谢大家
...全文
241 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
lryxxh 2010-03-17
  • 打赏
  • 举报
回复
8楼正解,只要设置Renderer就可以了,在里面你可以设置对齐方式this.setHorizontalAlignment(SwingConstants.LEFT);就可以了
fdl0112 2010-03-17
  • 打赏
  • 举报
回复
8楼的兄弟,十分感谢啊,我试试看。
gentalguo 2010-03-15
  • 打赏
  • 举报
回复
可以考虑使用 java.text.DecimalFormat
例如:
12.151000
DecimalFormat df = new DecimalFormat("#00.000000");
String s = df.format(rs);
第二,对齐问题。需要更改对应的Renderer。
一般改写getTableCellRendererComponent方法。如果你只要这一点,不需要改写很多。
可以:
Component c = super.getTableCellRendererComponent();
setHorizontalAlignment(JComponent.RIGHT_ALIGNMENT);
return c;
即可。
最后给你的table设置此renerer.

setHorizontalAlignment(JComponent.RIGHT_ALIGNMENT);
如果为了简便给所有格都设置为这个Renderer,你这里可以写作:

boolean isNumber = false;
try{
Double.parseDouble(s);
isNumber = True;
}catch(Exception e){
//
}

setHorizontalAlignment(isNumber ? JComponent.RIGHT_ALIGNMENT : JComponent.LEFT_ALIGNMENT);
fdl0112 2010-03-15
  • 打赏
  • 举报
回复
谢谢楼上两位兄弟的指导,我会试试看的。不过我还是想问问现有的类库中确实不能实现我所需要的功能吗?
zhouyong80 2010-03-12
  • 打赏
  • 举报
回复
写一个自己的字符串对齐器类来实现字符串的对齐
ZRBRZB 2010-03-11
  • 打赏
  • 举报
回复
这个问题要从JTable着手,应该重写类 TableCellEditor
fdl0112 2010-03-11
  • 打赏
  • 举报
回复
没人知道吗?期待指导中......
fdl0112 2010-03-10
  • 打赏
  • 举报
回复
引用 2 楼 musiclee 的回复:
楼主 你自己写个String处理函数 ,预算好长度,要右对齐就左边加空格,居中就两边加空格。。。。

长度是无法提前预算的,是很复杂的计算结果列表。我想问问能不能直接利用已有的库函数的组合实现我的需要。
musiclee 2010-03-09
  • 打赏
  • 举报
回复
楼主 你自己写个String处理函数 ,预算好长度,要右对齐就左边加空格,居中就两边加空格。。。。

62,615

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧