フッター行 (各列のデータの合計を含む) を持つ JTable (Java Swing) を作成する必要があります。
具体的なニーズは次のとおりです。
- フッターは常に表示されます (ヘッダーと同様): 親の JScrollPane は、ヘッダーとフッター (つまり、実際のデータ) の間でのみスクロールする必要があります。
- テーブルの列はサイズ変更できません (これにより作業が簡単になります)
- 画面の解像度に応じて、テーブルを水平方向および/または垂直方向にスクロールできます
同様の質問を読むと、メインテーブルの下に2番目のテーブル(1行のみ)を追加するのが最善の方法のようです。これは私がしたことです:
JPanel result = new JPanel(new BorderLayout());
SessionTable sessionTbl = null; //This is a JTable
AbstractSessionTableModel sessionTableModel = null;
JScrollPane sessionScrollPane = null;
(...)
//Inits scrollpane
sessionScrollPane = new JScrollPane(sessionTbl);
sessionScrollPane.setPreferredSize(new Dimension(100, 50));
sessionScrollPane.setBorder(BorderFactory.createEmptyBorder());
//Adds tables
result.add(sessionScrollPane, BorderLayout.CENTER);
//Adds footer table (which is also contained in a JScrollPane and has the same columns than the main table)
result.add(createSessionFooterTable(sessionTableModel), BorderLayout.SOUTH);
残念ながら、このアプローチには 2 つの問題があります (図を参照)。
- 水平スクロールはメイン テーブルのみを移動します (つまり、別の JScrollPane にあるため、フッターは移動しません)。
- 2 つのテーブルの間に水平スクロール バーが表示されます
次に、別のアプローチを試しました。共通の JScrollPane に追加する前に、同じ JPanel に 2 つのテーブルを追加します。残念ながら、このアプローチには 2 つの問題もあります。
- メイン テーブルのヘッダーが表示されなくなりました
- フッター行はスクロールの一部です (常に表示されるわけではありません)。
どんな助けやヒントも大歓迎です!
どうもありがとう!トーマス