Swing/TableHeaderAndFooter のバックアップ(No.4)
- バックアップ一覧
 - 差分 を表示
 - 現在との差分 を表示
 - 現在との差分 - Visual を表示
 - ソース を表示
 - Swing/TableHeaderAndFooter へ行く。
 
- 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
 
Summary
JTableにヘッダーとJTableHeaderで作成したソートやカラムの並び替え可能なフッターの両方を表示します。
Screenshot

Advertisement
Source Code Examples
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;
}