2012-03-15 2 views
2

나는 Jtable (tableSummary)을 가지고 있습니다. 내용이 10 진수 형식 (예 : 1,400.00)이되도록 표의 2 열을 형식화해야합니다. 어떻게 할 수 있습니까? 매일Jtable의 숫자 서식

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와 내가 포맷 할 필요가 열은 다음과 같습니다

여기에 테이블에 대한 내 코드입니다.

미리 감사드립니다. 클레오 파트라로

+0

모든 문제에는 동일한 이유가 있습니다. _do not_ 개체의 문자열 표현을 tableModel에 추가하고 개체 자체를 추가하십시오. 그런 다음 필요에 따라 문자열 담당자를 구성 할 수 있습니다 (f.i. 사용자 지정 렌더러의 형식 사용 – kleopatra

+0

코드를 문제의 핵심으로 단순화하고 다른 한편으로는 목표를 달성 한 사람이 쉽게 테스트 할 수 있도록 자체 실행 예제를 제공해야합니다. 덕분에 –

답변

2
NumberFormat formatter = new DecimalFormat("#,###.00"); 
String str = formatter.format(1400); 
System.out.println(str); 
+0

. 하지만 내가 포맷하는 것은 테이블의 열입니다. String amt = rs.getString (4); 및 문자열 일일 = rs.getString (6); 이 테이블에 삽입하기 전에 먼저 형식을 지정할 수 있습니까? – zairahCS

+0

addRow()를 호출하기 전에이 변환을 적용하면됩니다. –

+0

@JakubZaverka는 다른 방식으로 더 잘합니다. :-) – kleopatra

4

이미 렌더러의 작업은 그녀의 의견

  • String 표현 (또는 다른 표현)에 개체에서 변환

    에 제안했다. 귀하의 TableModel
  • 가 만든 개체를 포함하고 NumberFormat에 대한 사용 하나를 사용할 수 있습니다 Number 인스턴스에 대한 렌더러으로

(JTable#setDefaultRenderer 또는 오버라이드 (override) JTable#getCellRenderer를 호출하여 예를 들면) 당신의 JTable에 적절한 렌더러를 설정해야합니다 Samir의 답변에 표시된대로 서식을 지정하십시오.