2

私のアプリケーションでは、この図のように 2 つの Swing コンポーネントが重なり合っています。問題は、オレンジ色のコンポーネントに垂直スクロールバーが必要なことですが、コンポーネントの右端を正確に揃えたい (ユーザーがアプリを広げたり狭めたりすると、幅が変わる可能性があります)。グリッド レイアウトのようなものを使用すると、スクロールバーがスペースを占有し、スクロールバーが赤いコンポーネントの右端に整列します。

ここに画像の説明を入力

スクロールバー コンポーネントを使用して個別に追加し、それを使用してオレンジ色のコンポーネントを制御する必要があるかもしれないと考えています。そのような別のコンポーネントにスクロールバーを取り付ける方法はありますか? スクロールペインを使わないと難しいと思います。また、これにアプローチする他の方法についての提案も受け付けています。

4

1 に答える 1

2

あなたが提案したアプローチを実装するのはそれほど難しいことではありません。オレンジ色のコンポーネントをでラップしJScrollPaneますが、両方のスクロールバーを非表示にするようにスクロールペインを構成します。次に、スクロールペインの垂直スクロールバーのスクロールモデルを、スタンドアロンスクロールバーからのスクロールモデルに設定します。スクロールペインのスクロールバーは非表示になっていますが、モデルがリンクされている場合はスクロールします。いくつかのコードについては、この質問の私の答えを参照してください-それは異なるアプリケーションですが、同様の原理です。

または、JScrollPane垂直スクロールバーが表示されているを使用し、赤いコンポーネントの横に間隔コンポーネントを追加して、位置合わせを維持することもできます。GridBagLayout2列でaを使用できると思います。最初の行は赤いコンポーネントとスペーサーを保持し、2番目の行は両方の列にまたがるオレンジ色のコンポーネントを含むスクロールペインを保持します。次に、からスクロールバーコンポーネントの幅を取得しJScrollPane、スペーサーの優先幅を同じ値に設定する必要があります。この戦略の欠点は、スクロールバーの幅が変更された場合(たとえば、UIの変更など)にスペーサーサイズを更新し続けることが難しい場合があることです。

于 2012-05-30T21:07:00.763 に答える