1

フッター行 (各列のデータの合計を含む) を持つ 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 つの問題もあります。

  • メイン テーブルのヘッダーが表示されなくなりました
  • フッター行はスクロールの一部です (常に表示されるわけではありません)。

どんな助けやヒントも大歓迎です!

どうもありがとう!トーマス

4

1 に答える 1

2
于 2013-04-02T07:25:19.583 に答える