2012-01-31 6 views
2

私はJScrollPaneを持っていて、その中にJPanelを配置しました。 ボタンもあります。このボタンを押すと、ランダムな長さと幅の長方形がパネル上に描画されます 。したがって、このボタンを押すたびに、JPanelの再描画メソッドが呼び出されます。JPanelの長さと幅を自動的に拡張する方法は?

問題は、矩形の長さが長いことがあるため、JPanelですべてが表示されず、その一部が既にパネルに収まることです。

どのようにJPanelディスプレイに描画するものを、その矩形の寸法と同じにすることができますか?

+1

[SSCCE](http://sscce.org/)を投稿するとすぐに役立ちます。 1つの解決策は、パネルの好ましいサイズを(矩形よりも大きく)設定し、スクロールペインを検証することです。 –

答えて

2

1つの選択肢は、同様の寸法のBufferedImageGraphics物体上に四角形を描画し、次にJLabelIconとして画像を使用することです。このラベルを任意の座標のパネルに追加し、次にrevalidateJScrollPaneとし、repaintリクエストを発行します。

+1

毎回JLabelを追加する場合は、JScrollPaneで再描画または再検証する必要はありません。setViewportView(Componentビュー)またはJViewport.setView(...)を使用するだけです。よろしく、 –

+0

ああ、そうです。スクロールペインはこれを自動化します...素晴らしい点! – mre

1

ScrollPaneはサイズを制限しています。デフォルトのパネルは、その子コンポーネントに合わせて伸縮します。 ScrollPaneが固定されています。そのため、ScrollPaneと呼ばれています。あなたができることは、ボタンを押すたびに、またはそのサイズで矩形のサイズを計算し、スクロールペインを再描画することです。可能なサイズを知っていて、そのようなすべてのサイズを補うのに十分です。

関連する問題