0

これは私が持っているものです:JTabbedPane(他の要素に加えて)からなるJframe。JTabbedPane には、タブの 1 つとして JScrollPane が含まれています。JScrollPane には JPanel があります。JPanel 内には、多数の JLabel と JTable が表示されます。NetBeans のドラッグ アンド ドロップ Swing エディタを使用して GUI を作成しました。

各 JTable は JScrollPane 内に含まれています。(IDE が挿入したもの) 現在、JTable の高さは固定されています。そのため、要素数が少ない場合、JScrollPane 内に空白が表示されます。要素の数がそれ以上の場合、ユーザーは JTable を含む JScrollPane をスクロールする必要があります。JTable の横スクロールも同様です。ウィンドウが最大化されている場合、JTable の幅も増加して使用可能な領域全体を占有します。JScrollPane の高さがスクロールせずに JTable のすべての行を表示するのに必要なだけ大きくなるように GUI を変更することは可能ですか? また、JTable の幅は、水平スクロールなしでコンテンツを表示するために必要な大きさにする必要があります。JTable の列数が多すぎるか、要素の数 ( JTable'

4

1 に答える 1

0

JTable を使用する最も簡単な方法は、テーブルを JScrollPane に追加して、テーブル ヘッダーも表示されるようにすることです。すべてのデータが表示され、スクロールバーが表示されないように、スクロールペインのサイズをテーブルのサイズに設定する必要があります。コードは次のようになります。

JTable table = new JTable( ... );
table.setPreferredScrollableViewportSize(table.getPreferredSize());
JScrollPane scrollPane = new JScrollPane( table );
panel.add( scrollPane );

パネルのレイアウト マネージャーがスクロールペインの推奨サイズを尊重する場合、テーブルのすべてのデータが表示されます。

もちろん、テーブル内のデータを動的に変更すると、適切なサイズが変更されるため、getPreferredScrollableViewportSize(...)テーブルの をオーバーライドして適切な値を返すことをお勧めします。

もう 1 つの方法は、BorderLayout でパネルを使用することです。テーブル ヘッダーを NORTH に追加し、テーブルを CENTER に追加してから、パネルをタブ付きペインに追加します。

于 2013-10-27T17:37:55.463 に答える