私は 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 よりも小さくすると、コンポーネントがめちゃくちゃになります。
私はそれをどのように見せたいですか: