Swing/HeaderFont の変更点
- 追加された行はこの色です。
- 削除された行はこの色です。
- Swing/HeaderFont へ行く。
- Swing/HeaderFont の差分を削除
--- category: swing folder: HeaderFont title: JTableHeaderのフォントを変更 tags: [JTable, JTableHeader, TableCellRenderer, UIManager] author: aterai pubdate: 2004-08-23T02:54:09+09:00 description: TableCellRendererを使って、JTableのヘッダが使用するフォントを変更します。 image: https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTNshbAJvI/AAAAAAAAAbM/xYo1iOQ9fxU/s800/HeaderFont.png --- * 概要 [#summary] `TableCellRenderer`を使って、`JTable`のヘッダが使用するフォントを変更します。 #download(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTNshbAJvI/AAAAAAAAAbM/xYo1iOQ9fxU/s800/HeaderFont.png) * サンプルコード [#sourcecode] #code(link){{ 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; } } }} * 解説 [#explanation] 上記のサンプルでは、`0`番目のカラムヘッダだけフォントを変更しています。`JTableHeader`のセルを修飾する場合も`JTable`中のセルの場合と同様に`TableCellRenderer`を実装したセルレンダラーが使用可能です。 サンプルのセルレンダラーは、`TableCellRenderer#getTableCellRendererComponent(...)`メソッドの中で委譲しているヘッダのデフォルトのレンダラーから描画に使用するコンポーネント(`JLabel`)を取得し、そのラベルのフォントだけ`JLabel#setFont(...)`メソッドで置き換えています。 - 同様の方法で文字色、背景色、ボーダー、文字の中央揃え、右揃えなども変更可能 -- 字揃えを変更する場合の注意点: [[JTableHeaderの字揃えを変更>Swing/HorizontalAlignmentHeaderRenderer]] - コメントで&user(いつも見てます);さんが指摘しているように、`JTableHeader#setFont()`メソッドを使用すると全カラムヘッダのフォントを指定可能 - コメントで&user(いつも見てます);さんが指摘しているように`JTableHeader#setFont()`メソッドを使用すると全カラムヘッダのフォントを指定可能 #code{{ table.getTableHeader().setFont(font); }} - すべての`JTable`のヘッダを同じフォントや文字色で変更する場合は、以下のように`UIManager`を使用する方法もある - すべての`JTable`のヘッダを同じフォントや文字色で変更する場合は以下のように`UIManager`を使用する方法もある #code{{ UIManager.put("TableHeader.font", new FontUIResource(font)); }} * 参考リンク [#reference] - [[使用するフォントの統一>Swing/FontChange]] - [https://tips4java.wordpress.com/2009/02/27/default-table-header-cell-renderer/ Default Table Header Cell Renderer Java Tips Weblog] - [[JTableHeaderの字揃え>Swing/HorizontalAlignmentHeaderRenderer]] * コメント [#comment] #comment - これでいいのでは? `JTableHeader header = TABLE.getTableHeader(); header.setFont(FONT);` -- &user(いつも見てます); &new{2011-11-24 (木) 06:02:05}; -- ご指摘ありがとうございます。解説などをすこし追加、修正しました。 -- &user(aterai); &new{2011-11-24 (木) 16:28:46}; #comment