在Java swing中编写表格JTable时遇到如下的问题:
在表格中想要把数字的小数点后保留六位,比如12.151000,包括尾数的0也要显示出来,但是在表格中却都自动地省略了,不知如何是好?然后我调用了NumberFormat来修改,使用了其中的setMinmumFractionDigit命令(不知道拼写对没,呵呵),但是这样的话最后的结果显示变成了字符串形式,不是数字形式了,而我又想按数字格式把所有数字按右对齐显示(字符串形式是左对齐)。所以如果格式化成功,结果就变成字符串形式左对齐了(不是我想要的);如果使其按数字形式右对齐,又无法保证统一的数字格式。想请教大家,如何才能在JTable表格中使得数字既能统一格式,又能右对齐排列显示。
此外,还想请教大家,如果数字过大时,能不能同时限制有效位数呢,比如我看到表格中得出这样的数:2.354468978794894E15,能不能只是显示2.354469E15呢?
希望大家给我想个能同时满足我小数点位数、整数位数、表格中右对齐显示的方法。需要用那些命令组合呢?谢谢大家

解决方案 »

  1.   

    楼主 你自己写个String处理函数 ,预算好长度,要右对齐就左边加空格,居中就两边加空格。
      

  2.   

    这个问题要从JTable着手,应该重写类 TableCellEditor
      

  3.   

    可以考虑使用 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);
      

  4.   

    8楼正解,只要设置Renderer就可以了,在里面你可以设置对齐方式this.setHorizontalAlignment(SwingConstants.LEFT);就可以了