Swing/TableHeaderAndFooter のバックアップ(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/TableHeaderAndFooter へ行く。
- 1 (2024-08-26 (月) 15:28:59)
- category: swing folder: TableHeaderAndFooter title: JTableにフッターを追加する tags: [JTable, JTableHeader] author: aterai pubdate: 2024-08-26T15:27:13+09:00 description: JTableにヘッダーとJTableHeaderで作成したソートやカラムの並び替え可能なフッターの両方を表示します。 image: https://drive.google.com/uc?id=1QJk4oz_eDxOed_YbNINBidafY3YhM4WE
概要
JTableにヘッダーとJTableHeaderで作成したソートやカラムの並び替え可能なフッターの両方を表示します。
Screenshot
Advertisement
サンプルコード
JTable table = new JTable(makeModel());
table.setAutoCreateRowSorter(true);
JTableHeader footer = new JTableHeader(table.getColumnModel());
footer.setTable(table);
JScrollPane south = new JScrollPane();
JViewport vp = new JViewport();
vp.setView(footer);
south.setColumnHeader(vp);
JPanel p = new JPanel(new BorderLayout());
p.add(new JScrollPane(table));
p.add(south, BorderLayout.SOUTH);
View in GitHub: Java, Kotlin解説
new JTableHeader(table.getColumnModel())
でColumnModel
を共有するJTableHeader
を作成してフッターとしてJPanel
に配置ColumnModel
の共有でヘッダー、フッターの両方でマウスでのカラム移動が同期可能- フッターで
JTableHeader#setTable(table)
と親JTable
を設定することでカラムクリックによるソートの同期が可能 - フッターカラムの幅をマウスでリサイズの不可
- ヘッダーカラムの幅をリサイズするとフッターカラムの幅も同期してリサイズは可能
BasicTableHeaderUI#changeColumnWidth(...)
で親の親がJScrollPane
かをチェックしているのでフッターをJScrollPane#setColumnHeader(...)
でJScrollPane
に配置してもリサイズは不可のまま?
Container container;
JTable table;
if ((th.getParent() == null) ||
((container = th.getParent().getParent()) == null) ||
!(container instanceof JScrollPane) ||
((table = th.getTable()) == null)) {
return 0;
}