2

MyPanelを拡張するクラスがありますJPanel
MyPanelは子パネルです。そのサイズは親によって動的に計算されLayoutManagerます。
問題は、彼の親がサイズを計算しMyPanelたらすぐに通知する必要があることです。LayoutManager
パネルのサイズに応じていくつかの変数を初期化する必要があるため、通知する必要があります。MyPanel コンストラクター

を呼び出すと、パネルが「準備完了」していないため、(0,0) が返されます。 いつ電話すればいいですか? 私はこのようなものが欲しいです:getSize()
getSize()

/** Lays out the panel and sets his size according to his layout */
@Override
public void onReady() {
    System.out.println(getSize()); //output is (0,0);
    super.onReady();
    System.out.println(getSize()); //output is (600,500);
    //here i can initialize my variables
}

似たようなものはありますか?たぶんdoLayout()

私が見つけることができる唯一の方法getSize()は、paintComponent()メソッドで呼び出すことです...呼び出されたときにパネルが確実に表示されるため、確実に機能paintComponent()しますが、パネルのサイズがわかったらすぐにいくつかの変数を初期化する必要があるため、これを行うことはできません.. . でも一度だけ!paintComponent()何度か呼ばれる…

4

2 に答える 2

4

最善の方法は、ComponentListener を使用することです。

ComponentListener.componentResized(ComponentEvent) を参照してください。

于 2012-05-04T19:03:12.373 に答える
4

ですComponentListener.componentResized()

于 2012-05-04T19:03:20.080 に答える