我在以Date格式显示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();
        }
println(.)永远不会被打印出来,所以甚至都没有实现。正在显示的格式是Apr 10, 1992,但是我想要04/10/92
当我们在Date中讨论JTables时,我将isCellEditable(.)设置为true,但是无法编辑Date单元格。你怎么做到这一点?

最佳答案

不要覆盖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);

关于java - 在Jtable/ResultSet中格式化日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2412007/

10-12 16:24