Я надеялся, что кто-нибудь сможет мне что-то объяснить, когда я нашел свое решение, но я не понимаю, почему оно работает.Я хотел установить рендерер по умолчанию по типу класса для всей таблицы, не зная при создании, где в нем будут находиться объекты.
Я объявил JTable и установил рендерер по умолчанию на свой собственный, дляКласс Calendar
, чтобы любые Calendar
s давали значимое представление, а не просто toString()
.
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
должен делать именно то, что было переопределено в примере, который я дал выше - почему это работает, когда я переопределяюэтот метод, но не когда я покидаю реализацию stock?
Теперь я могу заполнить столбцы с Calendar
s, пока они заполняют 0-ю строку, что я и хотел, но что помешало мне сделать это в первойместо