Jtable/ResultSet中的格式化日期

two*_*ate 4 java date jtable

我无法Date以我想要的格式显示s JTable.我JTable已使用ResultSet和列表创建.

我试过以下getValueAt(.)但没有运气:

        if(value instanceof Date)
        {
            //System.out.println("isDate");
            DateFormat formatter = DateFormat.getDateInstance();
            SimpleDateFormat f = new SimpleDateFormat("MM/dd/yy");
            value = f.format(value);
            Date parsed  = (Date) value;
            try {
                parsed = (Date) f.parse(value.toString());
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            value = parsed.toString();
        }
Run Code Online (Sandbox Code Playgroud)

println(.)从不打印所以它甚至不说这个.正在显示的格式是Apr 10, 1992我想要的04/10/92

虽然我们对的话题DateJTables,我还isCellEditable(.)为真,但我不能编辑日期细胞.你怎么做到这一点?

Pet*_*ang 14

不要覆盖getValue,TableCellRenderer改为使用:

TableCellRenderer tableCellRenderer = new DefaultTableCellRenderer() {

    SimpleDateFormat f = new SimpleDateFormat("MM/dd/yy");

    public Component getTableCellRendererComponent(JTable table,
            Object value, boolean isSelected, boolean hasFocus,
            int row, int column) {
        if( value instanceof Date) {
            value = f.format(value);
        }
        return super.getTableCellRendererComponent(table, value, isSelected,
                hasFocus, row, column);
    }
};

table.getColumnModel().getColumn(0).setCellRenderer(tableCellRenderer);
Run Code Online (Sandbox Code Playgroud)


cam*_*ckr 5

正在显示的格式是1992年4月10日

听起来像Date的toString()表示存储在TableModel而不是Date对象.因此,您需要检查数据如何从ResultSet复制到TableModel.确保使用resultSet.getObject()方法.或者问题是您在数据库中存储的字符串格式与您看到的格式相同.

无论如何,一旦您能够在TableModel中实际存储Date对象,请查看表格格式渲染器,它允许您在一行代码中创建具有自定义日期格式的自定义渲染器.