Swing/TableDisplayDensity のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/TableDisplayDensity へ行く。
- 1 (2023-11-20 (月) 00:26:10)
- 2 (2023-11-20 (月) 06:47:47)
- category: swing folder: TableDisplayDensity title: JTableの表示倍率を変更する tags: [JTable, Font, JTableHeader] author: aterai pubdate: 2023-11-20T00:20:43+09:00 description: JTableのフォントサイズ、行高、セルエディタのチェックアイコンなどを拡大縮小して表示倍率を変更します。 image: https://drive.google.com/uc?id=1LJH0jt7I5_dk-N4MQhnkGmahNz9NMbOu
概要
JTableのフォントサイズ、行高、セルエディタのチェックアイコンなどを拡大縮小して表示倍率を変更します。
Screenshot
Advertisement
サンプルコード
table.removeEditor();
Font f = font.deriveFont(fontSize * x);
table.setFont(f);
table.getTableHeader().setFont(f);
table.setRowHeight((int) (.5f + rowHeight * x));
// // IntercellSpacing
// Dimension d = new Dimension(1, 1);
// d.width = (int) (.5f + d.width * x);
// d.height = (int) (.5f + d.height * x);
// table.setIntercellSpacing(d);
// // SortIcon:
// UIDefaults def = UIManager.getLookAndFeelDefaults();
// Icon ascending = def.getIcon("Table.ascendingSortIcon");
// Icon descending = def.getIcon("Table.descendingSortIcon");
// int w = (int) (.5f + ascending.getIconWidth() * x);
// int h = (int) (.5f + ascending.getIconHeight() * x);
// UIManager.put("Table.ascendingSortIcon", new ScaledIcon(ascending, w, h));
// UIManager.put("Table.descendingSortIcon", new ScaledIcon(descending, w, h));
View in GitHub: Java, Kotlin解説
JTable
JTable#setFont(...)
で倍率を変更したFont
を設定するとセルレンダラーのFont
も連動して変更される- デフォルトセルレンダラーとは異なりデフォルトセルエディタの
Font
は自動的には更新されないため、このサンプルではJTable#prepareEditor(...)
をオーバーライドしてJTable
のFont
をセルエディタに適用している JTable
の各行の高さはJTable
のFont
サイズとは無関係のため、別途JTable#setRowHeight(...)
で倍率に応じた高さに変更する必要がある- デフォルトの
BooleanCellRenderer
やBooleanCellEditor
で使用されるJCheckBox
はFont
サイズを変更してもチェックアイコンは不変のため、このサンプルではJCheckBoxのチェックアイコンを拡大縮小するのサイズ可変アイコンを使用するよう修正している - 罫線の太さやセル内余白(
JTable#getIntercellSpacing()
)はJTable
のFont
サイズを変更しても一定
JTableHeader
JTable
に適用したFont
はJTableHeader
には自動的に設定されないため、JTable#getTableHeader()#setFont(font)
を別途実行する必要があるJTableHeader
の高さはJTableHeader
のFont
サイズに自動的に連動して更新されるJTableHeader
に表示されるソートアイコンはJTableHeader
のFont
サイズを変更しても一定