- ベストアンサー
スクロールパネルの使い方
スクロールパネルが上手く使えなく困っております。 現在の私の状況: フレームの上にメインパネルを張る。 メインパネルの上にスクロールパネルを張る。 スクロールパネルの上にサブパネルを張る。 下から フレーム ↓ メインパネル ↓ スクロールパネル ↓ サブパネル です。 サブパネルの高さが変わるので、スクロールパネルを使用したのですが、サブパネルの高さがスクロールパネルの高さ以上になってもスクロールパネルの上下スクロールバーが表示されません。 なぜでしょうか? 説明不足している個所がありましたらご指摘ください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> ご回答ありがとうございました。 > AWTです。 じゃあNo.1の回答は的外れです。 忘れてください。 サイズだけはスクロールペインよりも大きいけれど、 空っぽのパネルがスクロールできない、 ということですか。 スクロールペインは、子コンポーネントの getPreferredSize() メソッドを呼び出して、 子コンポーネントの大きさを知ります。 getSize() ではありません。 そして、それに対応する setPreferredSize() メソッドは、Swing にはありますが、AWT には ありません。 たとえば、次のように Panel を継承したクラスを 使えば、望みの振舞いをしそうですが、 こんなことしていいのかよく知りません。 このコードそのままじゃきっとまずいです。 せめて、内部で super.getPreferredSize() を呼び出して、その値が望んでる値より小さいとき だけ、値をすりかえるとか、そういう処理なら 多分問題ないでしょう。 Panel pane = new Panel() { public Dimension getPreferredSize() { return new Dimension(500, 500); } }; ScrollPane scroller = new ScrollPane(); scroller.setSize(100, 100); scroller.add(pane);
その他の回答 (1)
- Harry_
- ベストアンサー率55% (36/65)
Swing ... でしょうか。 スクロールペインに貼り付け(?)てる サブパネルの高さというのは、プログラム中で 変化させてるわけですか? その箇所の後で revalidate() メソッドを呼び出したら どうなります?
お礼
ご回答ありがとうございました。 AWTです。 >サブパネルの高さというのは、プログラム中で >変化させてるわけですか? ハイ、変えます。 しかし問題は、サブパネルはデフォルトでスクロールパネルより大きいのにも関わらずスクロールが出ないという事です。 その箇所というのは、サブパネルの高さを変える箇所でしょうか?
お礼
度々のご回答ありがとうございました。 Harryさんからのご回答にヒントを得て?サブパネルのサイズ設定後に[validate]というメソッドを発行したらスクロールできました。なぜだかわかりませんがうまくいきました。