2014-03-13 44 views
0

爲什麼以下CellRenderer不會格式化時間戳?而不是HH:mm我收到一些東西,例如07:00.000.00單元格渲染器不會格式化時間戳

DefaultTableCellRenderer cellRenderer = new DefaultTableCellRenderer() 
{ 
    public Component getTableCellRendererComponent(JTable table, Object value, boolean 
                isSelected, boolean hasFocus, int row, int column) 
    { 
     super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); 
     if (value instanceof LocalDateTime) 
     { 
      DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm"); 
      String strTime = formatter.print((LocalDateTime)value); 
      this.setText(strTime); 
     } 

     return this; 
    } 
}; 
+2

也許'value'不是'LocalDateTime'。然後'super.getTableCellRendererComponent(...)'將被單獨調用。你應該檢查類型。 –

+0

@Meno Hochschild:是的,它是LocalTime的實例。謝謝。 –

+0

爲了更快獲得更好的幫助,請發佈[MCTaRE](http://stackoverflow.com/help/mcve)(最小完整測試和可讀示例)。 –

回答

2

你是如何在表格中添加渲染器的?您需要:

  1. 具體渲染器添加的TableColumn
  2. 覆蓋了的getColumnClass(...)方法返回LocalDateTime.class讓您的渲染器將用於含LocalDateTime對象的任何列。

有關更多信息,請參閱Swing教程中有關Using Custom Renderers的部分。