JTable
があり、各セルに対して異なる色の3つの文字列、たとえばvalue1(赤色)、value2(青色)、value3(緑色) 。複数の文字列が異なる方法でJTableの同じセルに色付けされている
getTableCellRendererComponent
はDefaultTableCellRenderer
であるが、setForeground(Color)
の方法では、細胞に示されたすべての文字列に固有の色が得られます。
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
String s = table.getModel().getValueAt(row,column).toString();
StringTokenizer st = new StringTokenizer(s," ");
int nToken=st.countTokens();
value1=st.nextToken();
value2=st.nextToken();
value3=st.nextToken();
// so now all the values are blue...
setForeground(Color.blue);
return super.getTableCellRendererComponent(table, value, isSelected,
hasFocus, row, column);
}
HTMLコンポーネントは、非常に迅速に非常に遅くなります。コンポーネントをキャッシュすることはできますが、それは特殊な場合以外には難しくなります。 –
代わりに、独自のJComponentを書くことは高速です。しかし、それを正しくするのは難しい –