2011-12-21 36 views
1

私はSwingフォームを設計しました。 JScrollPaneで構成され、それ自体には別のJPanelが含まれています。いくつかのUIイベントのため、JPanelComponentが追加されます。メッセージボックスのように、メッセージが到着するとリストに追加されます。 問題はこのJPanelへの変更を表示する方法です。これを達成するには、簡単にJFrame#pack()メソッドを呼び出します。しかし、これを呼び出すとコンテナのサイズにフレームがリサイズされ、最初に設定したprefferedSize, and maximumSizeを無視します。スクロールバーも表示されません。単にコンポーネントがパネルに追加されると、フレームの高さが大きくなります。私はフレームが初期サイズのままで、スクロールバーはコンポーネントの合計サイズがフレームのサイズを超えたときに動作する必要があります。どこが間違っていますか?助けてください。 )(JFrameのサイズが変更され、スクロールバーが表示されない

panel.add(...); 
panel.revalidate(); 

再検証:あなたがパネルにコンポーネントを追加すると enter image description here

+0

スクリーンショットを追加できますか? –

+0

コードはどこですか、あなたはすべて理論の部分を説明しました。コードを入力してください。 –

+0

@ProphesyAwaits私はnetbeans IDEを使用しています。コードは、私はそれをアップロードする必要がありますIDEを生成されますか? – batman

答えて

3

一般的なコードは次のとおりです。 enter image description here

は、この画面では、コンポーネントが追加されるときである: これが私の最初の画面ですメソッドは、パネルの推奨サイズを再計算します。推奨サイズがスクロールペインのサイズより大きい場合、スクロールバーが表示されます。

もちろん、この機能を自動的に実行するにはレイアウトマネージャを使用する必要があります。

+0

'JFrame#pack()'が 'maximumSize'を無視する理由をplsで説明できますか? – COD3BOY

+0

申し訳ありませんが、私はそれを使用しようとしたことはありません。 – camickr

+0

@Sanjayは使用されているLayoutManagerに依存していますが、そのほとんどはBoxLayoutを除いてXxxSizeを無視しています – mKorbel

関連する問題