Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jtable中的数字格式_Java_Sql_Swing_Jtable_Tablemodel - Fatal编程技术网

Java Jtable中的数字格式

Java Jtable中的数字格式,java,sql,swing,jtable,tablemodel,Java,Sql,Swing,Jtable,Tablemodel,我有一个Jtable(表摘要)。 我需要格式化表格的2列,使其内容为十进制形式(例如1400.00) 我怎么做 以下是我的表格代码: private void tableMarketMouseClicked(java.awt.event.MouseEvent evt) { String sql = "SELECT tblClientInfo.ClientID, tblrefmarket.MarketDe

我有一个Jtable(表摘要)。 我需要格式化表格的2列,使其内容为十进制形式(例如1400.00) 我怎么做

以下是我的表格代码:

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是我需要格式化的列


提前谢谢

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

NumberFormat formatter = new DecimalFormat("#,###.00");
String  str = formatter.format(1400);
System.out.println(str);
  • 从对象到字符串表示(或任何其他表示)的转换是渲染器的任务。您的
    TableModel
    应该只包含对象
  • JTable
    上创建并设置适当的渲染器(例如,通过调用或重写)

作为
Number
实例的渲染器,您可以使用一个使用
NumberFormat
进行格式化的渲染器,如Samir的回答所示

谢谢。但我要格式化的是表中的列。字符串金额=rs.getString(4);和String daily=rs.getString(6);在我将其插入表中之前,如何先格式化?只需在调用addRow()之前应用此转换即可。@JakubZaverka最好用另一种方法:-)所有问题都有相同的原因:不要将对象的字符串表示形式添加到表模型中,而是添加对象本身。然后,您可以根据需要配置字符串表示,即自定义呈现器中的格式。您应该将代码简化到问题的核心,另一方面,尝试提供一个自动运行的示例,以便尝试提供帮助的人员可以轻松地进行测试,如果他们达到了目标。