JTableHeaderのフォントを変更
Total: 25138
, Today: 2
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
TableCellRenderer
を使って、JTable
のヘッダが使用するフォントを変更します。
Screenshot
Advertisement
サンプルコード
class HeaderRenderer implements TableCellRenderer {
private final Font font = new Font(Font.SANS_SERIF, Font.PLAIN, 32);
@Override public Component getTableCellRendererComponent(JTable t,
Object val, boolean isS, boolean hasF, int row, int col) {
TableCellRenderer r = t.getTableHeader().getDefaultRenderer();
JLabel l = (JLabel) r.getTableCellRendererComponent(t, val, isS, hasF, row, col);
l.setFont(font);
return l;
}
}
View in GitHub: Java, Kotlin解説
上記のサンプルでは、0
番目のカラムヘッダだけフォントを変更しています。JTableHeader
のセルを修飾する場合もJTable
中のセルの場合と同様にTableCellRenderer
を実装したセルレンダラーが使用可能です。
サンプルのセルレンダラーは、TableCellRenderer#getTableCellRendererComponent(...)
メソッドの中で委譲しているヘッダのデフォルトのレンダラーから描画に使用するコンポーネント(JLabel
)を取得し、そのラベルのフォントだけJLabel#setFont(...)
メソッドで置き換えています。
- 同様の方法で文字色、背景色、ボーダー、文字の中央揃え、右揃えなども変更可能
- 字揃えを変更する場合の注意点: JTableHeaderの字揃えを変更
- コメントでいつも見てますさんが指摘しているように
JTableHeader#setFont()
メソッドを使用すると全カラムヘッダのフォントを指定可能table.getTableHeader().setFont(font);
- すべての
JTable
のヘッダを同じフォントや文字色で変更する場合は以下のようにUIManager
を使用する方法もあるUIManager.put("TableHeader.font", new FontUIResource(font));