TITLE:JTableHeaderのフォントを変更

JTableHeaderのフォントを変更

編集者:Terai Atsuhiro
作成日:2004-08-23
更新日:2022-08-07 (日) 00:18:06

概要

TableCellRendererを使って、JTableのヘッダが使用するフォントを変更します。

#screenshot

サンプルコード

 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;
   }
 }
  • &jnlp;
  • &jar;
  • &zip;

解説

ヘッダを修飾する場合も、セルの場合と同様に、TableCellRendererを実装したクラスを使用します。サンプルではフォントだけ変更していますが、getTableCellRendererComponentメソッドを実装することで、文字色、背景色、ボーダー、文字の中央揃え、右揃えなども変更することができます。

また、TableCellRendererではなく、以下のようにUIManagerを使用してフォントを変更する方法もあります。

 UIManager.put("TableHeader.font", new FontUIResource(font));

参考リンク

コメント