1

次の問題があります。

画像を含む JScrollPane があります。

スクロールペインは、BorderLayout を使用して全体をレイアウトできるようにするために、他のコンポーネントと一緒に JPanel 内にあります (スクロールペインは中央にあり、私は南に何かを持っています)。

この JPanel は JSplitPane にあります。

JSplitPane は最終的に JFrame 内にあります。

JFrame
{
 JSplitpane
 {
  JPanel(BorderLayout)
  {
   JScrollPane(CENTER)
   {
    BufferedImage
   }

   JPanel(SOUTH)
   {...}
  }
 }
}

私の問題は、フレームのサイズを変更すると、scrollPane の画像が画像のサイズに達するまでうまくサイズ変更されることです。次に、防止したい画像が引き伸ばされます。FlowLayoutでレイアウトされたJPanelにJScrollPaneをラップしてみました。サイズ変更ビットでは問題なく機能しますが、フレームのサイズを変更するとスクロールバーが消えます。

scrollPane の setSize() メソッドをオーバーライドしたところ、フレームのサイズが変更されると、スクロールペインのサイズが常に画像のサイズに設定されることがわかりました。私はそれを修正する方法の手がかりがありません。

すべてのヒントをいただければ幸いです。

乾杯、

ベン

4

1 に答える 1

0

の幅/高さでを呼び出すsetMaximumSize()と、うまくいくはずです(ただし、試したことはありません)。JScrollPaneBufferedImage

一般的なコメントとして、子を追加するためだけに Swing コンポーネントをオーバーライドするのは悪い考えです。代わりに、基本コンポーネントを作成および構成するコントローラー クラスを作成します。


私はあなたの質問を読み直して、疑問に思っています: 画像が引き伸ばされること、またはスクロールバーが消えることが問題ですか? スクロールするものがない場合でもスクロールバーを画面に表示したい場合は、setVerticalScrollBarPolicy()およびsetHorizontalScrollBarPolicy()メソッドを参照してください。

于 2010-01-11T14:50:21.503 に答える