2012-03-15 2 views
2

У меня есть Jtable (tableSummary). Мне нужно отформатировать 2 столбца таблицы, чтобы содержимое было в форме DECIMAL (например, 1,400.00) Как я могу это сделать?Формат номера в 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); 
     } 
    } 

колонна, АМТ и ежедневно являются столбцами я должен быть отформатирован.

Спасибо заранее!

+0

все ваши проблемы имеют одинаковую причину: -до не добавлять строковое представление объектов в таблицуModel, вместо этого добавлять сами объекты. Затем вы можете настроить строку rep по мере необходимости, 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); и String daily = rs.getString (6); прежде чем я вставляю это в таблицу, как я могу отформатировать его в первую очередь? – zairahCS

+0

Просто примените это преобразование, прежде чем вы вызовете addRow(). –

+0

@JakubZaverka лучше сделайте это наоборот :-) – kleopatra

4

Как Клеопатры уже предложил в своих комментариях

  • Переход от объекта к представлению строки (или любого другого представления) является задачей визуализатора. Ваш TableModel должен содержать только объекты
  • Создание и установить соответствующий визуализатор на ваш JTable (например, вызвав JTable#setDefaultRenderer или преимущественную JTable#getCellRenderer)

Как визуализатор для Number случаев вы можете использовать один, который использует NumberFormat для форматирование, как показано в ответе Самира

Смежные вопросы