Java JTable单元格日期渲染器

Java JTable单元格日期渲染器,java,swing,jtable,cell,Java,Swing,Jtable,Cell,尝试为日期编写自己的单元格渲染器。例如: class MyRenderer extends DefaultTableCellRenderer{ @Override public Component getTableCellRendererComponent(JTable jtab, Object v, boolean selected, boolean focus, int r, int c){ JLabel rendComp = (JLabel) super.g

尝试为日期编写自己的单元格渲染器。例如:

class MyRenderer extends DefaultTableCellRenderer{
    @Override
    public Component getTableCellRendererComponent(JTable jtab, Object v, boolean selected, boolean focus, int r, int c){
        JLabel rendComp = (JLabel) super.getTableCellRendererComponent(jtab, v, selected, focus, r, c);

        SimpleDateFormat formatter=new SimpleDateFormat("dd.MM.yy", Locale.ENGLISH);
        rendComp.setText(formatter.format(v));
        System.out.println(formatter.format(v));

        return rendComp;
    }
}

class DateModel extends AbstractTableModel{
    String colName[]={"Date"};
    public int getRowCount(){
        return 5;
    }

    public int getColumnCount() {
        return 1;
    }

    public String getColumnName(int c){
        return colName[c];
    }

    public Object getValueAt(int r, int c){
        return Calendar.getInstance().getTime();
    }
}

public class Test {
    public static void main(String[] args) {
        JFrame frame=new JFrame();
        frame.setSize(300, 300);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JTable table=new JTable(new DateModel());
        table.setDefaultRenderer(Date.class, new MyRenderer());

        JScrollPane pane=new JScrollPane(table);

        frame.add(pane);
        frame.setVisible(true);     

    }   
}
但是我的渲染器工作不正常,请返回此:

当尝试在我自己的单元格渲染器中设置日期格式以进行提示输出时,一切正常

在调试中,不要使用
GetTableCellRenderComponent
方法。

将此方法添加到DateModel类:

@覆盖
公共类getColumnClass(int columnIndex){
返回日期.class;
}
此方法有助于JTable识别您提供给它的数据类型,并将数据与相应的渲染器关联。JavaDoc说:

返回列中所有单元格值的最特定超类。JTable使用它为列设置默认呈现器和编辑器

将此方法添加到DateModel类:

@覆盖
公共类getColumnClass(int columnIndex){
返回日期.class;
}
此方法有助于JTable识别您提供给它的数据类型,并将数据与相应的渲染器关联。JavaDoc说:

返回列中所有单元格值的最特定超类。JTable使用它为列设置默认呈现器和编辑器


我怎么会忘记呢?谢谢。我怎么会忘记呢?谢谢。
@Override
public Class<?> getColumnClass(int columnIndex) {
    return Date.class;
}