Java 单元渲染器不格式化时间戳

Java 单元渲染器不格式化时间戳,java,swing,jtable,jodatime,tablecellrenderer,Java,Swing,Jtable,Jodatime,Tablecellrenderer,为什么下面的CellRenderer不格式化时间戳?我收到的不是HH:mm而是某个字符串,例如07:00.000.00 DefaultTableCellRenderer cellRenderer = new DefaultTableCellRenderer() { public Component getTableCellRendererComponent( JTable table, Object value, boolean

为什么下面的
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;
    }
};

如何将渲染器添加到表中?您需要:

  • 特别是将渲染器添加到TableColumn
  • 重写getColumnClass(…)方法以返回LocalDateTime.class,以便渲染器将用于包含LocalDateTime对象的任何列

  • 有关更多信息,请阅读Swing教程中的部分。

    可能
    不是
    LocalDateTime
    。然后将单独调用
    super.getTableCellRenderComponent(…)
    。您应该检查类型。@Meno Hochschild:yep,它是LocalTime的实例。谢谢。为了更快地获得更好的帮助,请发布一个(最简单、完整、可读的示例)。