0

私は GridBagLayout に埋め込まれた JScrollPane を持っています。ほとんどの場合、JScrollPane のコンテンツは使用可能なスペースよりも小さくなります。この場合、JScrollPane を必要なサイズに正確に合わせたいと思います。

たとえば、合計高さが 100px の 10 行のテキストがある場合、JScrollPane はスクロール バーなしで 100px にする必要があります。(これは動的である必要はありません。最大サイズを設定できれば十分です。コンテンツは変更されません。)

JFrame のサイズを変更し、使用可能なスペースが JScrollPane のコンテンツよりも小さくなった場合にのみ、JScrollPane を縮小してスクロールバーを表示します。

GridBagConstraints.fill パラメータを使用しようとしました。これは任意のサイズへのサイズ変更で機能しますが、常にスペース全体を埋めます( fill パラメータを使用するとどうなるか、と思います)。

fill パラメータを指定せずに setPreferedSize() を介して JScrollPane のサイズを設定しただけで、Frame がこの preferredSize よりも小さくなった場合、scrollPane はすぐに小さなチャンクに縮小します (私が読んだように、とにかく setPreferedSize メソッドを使用すべきではありません(?))。 .

また、優先サイズと最小サイズで BoxLayout を試しましたが、使用可能なスペースが優先サイズよりも小さくなると、JScollPane は即座に最小サイズを使用します。

要約すると、使用可能なスペースに応じてサイズを変更する JScrollPane が必要ですが、最大サイズまでしか変更できません。

目的の結果を得るには、どのレイアウトと設定を使用する必要がありますか?

私は何時間もこの問題に苦しんでいます:(

編集:

ここにいくつかのスクリーンショットがあります:

ラジオ 1 と 2 の下の左側にある JScrollPane。

通常のサイズのフレーム、JScrollPane は必要なスペースのみを使用します。 通常サイズ

大きくしても、JScrollPane は変更されません (機能します)。 ビッグサイズ

しかし、Frame を JScrollpane よりも小さくすると、コンポーネントがめちゃくちゃになります。 小さいサイズそのまま

私はそれをどのように見せたいですか: 小さいサイズ

4

0 に答える 0