私は自分の解決策を見つけたときに誰かが私に何かを説明してくれることを望んでいましたが、なぜそれが機能するのかわかりません。クラスタイプごとのデフォルトのレンダラーをテーブル全体に設定したかったのですが、作成時にオブジェクトがテーブル内のどこにあるかはわかりませんでした。
Calendar
私はJTableを宣言し、クラスのデフォルトのレンダラーを自分のものに設定して、任意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
、上記の例でオーバーライドされたものを正確に実行する必要があるようです-そのメソッドをオーバーライドすると機能するのに、ストック実装を離れるときに機能しないのはなぜですか?
これで、列を0行目まで埋めるまで、列を埋めることができますCalendar
。これは私が望んでいたことですが、そもそも何が原因でそれができなかったのでしょうか。