首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jtable中的数字格式

Jtable中的数字格式
EN

Stack Overflow用户
提问于 2012-03-15 17:22:08
回答 2查看 6.4K关注 0票数 2

我有一个Jtable (tableSummary)。我需要格式化表格的2列,这样它的内容就是小数形式(例如1,400.00),我该怎么做呢?

下面是我的表代码:

代码语言:javascript
复制
private void tableMarketMouseClicked(java.awt.event.MouseEvent evt)    {                                         

  String sql = "SELECT tblClientInfo.ClientID, tblrefmarket.MarketDesc, tblclientinfo.LastName, tblledger.LoanAmount, "
        + "tblledger.DateStarted, tblledger.DailyPay, tblledger.Expiry FROM tblclientinfo Inner Join tblbusinessinfo ON tblbusinessinfo.ClientID = tblclientinfo.ClientID "
        + "Inner Join tblrefmarket ON tblbusinessinfo.MarketID = tblrefmarket.MarketID "
        + "Inner Join tblledger ON tblledger.ClientID = tblclientinfo.ClientID where MarketDesc = ?";

   try {
        //add column to the table model
         model.setColumnCount(0); //sets the column to 0 para ig utro click, dili mapun-an ang columns
         model.setRowCount(0); //sets the row to 0 para ig utro click, dili mapun-an ang rows
         model.addColumn("C NO");
         model.addColumn("MARKET"); 
         model.addColumn("BORROWER");
         model.addColumn("LOAN");
         model.addColumn("START");
         model.addColumn("DAILY");
         model.addColumn("EXPIRY");
         //model.addColumn("BALANCE");

        int row = tableMarket.getSelectedRow();     
        pst = conn.prepareStatement(sql);  
        pst.setString(1, tableMarket.getModel().getValueAt(row, 0).toString());
        rs = pst.executeQuery();

        while(rs.next()){            
            String id = rs.getString(1);
            String market = rs.getString(2);  
            String name = rs.getString(3);
            String amt = rs.getString(4); 
            String start = rs.getString(5);
            String daily = rs.getString(6); 
            String expiry = rs.getString(7);
            //String area = rs.getString(3); 
            model.addRow(new Object[]{ id, market, name, amt, start, daily, expiry});         
        }     

        tableSummary.setModel(model);
        renderer.setHorizontalAlignment( JLabel.RIGHT );
        renderer2.setHorizontalAlignment( JLabel.CENTER );
        tableSummary.getColumnModel().getColumn(0).setCellRenderer( renderer2 );
        tableSummary.getColumnModel().getColumn(4).setCellRenderer( renderer2 );
        tableSummary.getColumnModel().getColumn(6).setCellRenderer( renderer2 );
        tableSummary.getColumnModel().getColumn(3).setCellRenderer( renderer ); 
        tableSummary.getColumnModel().getColumn(5).setCellRenderer( renderer );


      } catch (Exception e) {
        e.printStackTrace();
        JOptionPane.showMessageDialog(null, e);
      }
  } 

列amt和daily是我需要格式化的列。

提前感谢!

EN

回答 2

Stack Overflow用户

发布于 2012-03-15 22:18:04

正如克利奥帕特拉在她的评论中所说的那样

  • 从对象到字符串表示(或任何其他表示)的转换是渲染器的任务。您的TableModel应该只包含
  • 创建的对象,并在JTable上设置适当的渲染器(例如,通过调用JTable#setDefaultRenderer或覆盖JTable#getCellRenderer)

作为Number实例的呈现器,您可以使用使用NumberFormat进行格式化的呈现器,如Samir的答案所示

票数 4
EN

Stack Overflow用户

发布于 2012-03-15 17:27:29

代码语言:javascript
复制
NumberFormat formatter = new DecimalFormat("#,###.00");
String  str = formatter.format(1400);
System.out.println(str);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9716893

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档