当我找到我的解决方案时,我希望有人可以向我解释一些事情,但我不明白它为什么会起作用。我想按类类型将默认渲染器设置为整个表,在创建时不知道对象将在其中的位置。
我已经为类声明了一个 JTable 并将默认渲染器设置为我自己的渲染器,Calendar
这样任何Calendar
s 都会给出有意义的表示,而不仅仅是toString()
它们自己的 a。
JTable table = new JTable();
table.setDefaultRenderer(Calendar.class, new MyRenderer());
public class MyRenderer extends DefaultTableCellRenderer{
public MyRenderer() { super(); }
@Override
public void setValue(Object value){
setText(makeCalendarToDate((GregorianCalendar)value));
}
}
在我按照此处getColumnClass
所做的那样覆盖该方法之前,这将不起作用
根据 sun 的文档,它看起来getColumnClass
应该完全按照我上面给出的示例中覆盖的内容进行 - 为什么当我覆盖该方法时它会起作用,但在我离开股票实现时却不起作用?
现在我可以用Calendar
s 填充列,它们填充第 0 行,这是我想要的,但是是什么阻止了我首先这样做?