#navi(../)
*JTableHeaderのフォントを変更 [#e6b03eac]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2004-08-23~
更新日:&lastmod;

#contents
**概要 [#gc218846]
TableCellRendererを使って、JTableのヘッダが使用するフォントを変更します。

http://terai.xrea.jp/swing/headerfont/screenshot.png

**サンプルコード [#yf5b0d29]
 JTableHeader hd = jtable.getTableHeader();
 hd.setReorderingAllowed(false);
 hd.setDefaultRenderer(new HeaderRenderer(hd.getDefaultRenderer()));

 class HeaderRenderer implements TableCellRenderer {
   private final TableCellRenderer tcr;
   private final Font font = new Font("Sans-serif", Font.PLAIN, 32);
   private final Font orgfont;
   public HeaderRenderer(TableCellRenderer tcr) {
     this.tcr = tcr;
     this.orgfont = UIManager.getFont("TableHeader.font");
   }
   public Component getTableCellRendererComponent(JTable tbl, Object val,
                           boolean isS, boolean hasF, int row, int col) {
     JLabel lbl = (JLabel)tcr.getTableCellRendererComponent(
                                           tbl, val, isS, hasF, row, col);
     if(col==0) lbl.setFont(font);
     else lbl.setFont(orgfont);
     return lbl;
   }
 }

-[[サンプルを起動>http://terai.xrea.jp/swing/headerfont/sample.jnlp]]
-[[jarファイル>http://terai.xrea.jp/swing/headerfont/sample.jar]]
-[[ソース>http://terai.xrea.jp/swing/headerfont/src.zip]]
**解説 [#t308c293]
ヘッダを修飾する場合も、セルの場合と同様に、TableCellRendererを実装したクラスを使用します。サンプルではフォントだけ変更していますが、getTableCellRendererComponentメソッドを実装することで、文字色、背景色、ボーダー、文字の中央揃え、右揃えなども変更することができます。

また、TableCellRendererではなく、以下のようにUIManagerを使用してフォントを変更する方法もあります。
 UIManager.put("TableHeader.font", new FontUIResource(font));

**参考リンク [#rc6f4c8b]
-[[使用するフォントの統一>Swing/FontChange]]

**コメント [#b5df1536]
#comment