簡體   English   中英

調整大小時由LayoutManager通知JPanel

[英]JPanel notified by LayoutManager when resized

我有一個擴展JPanel的類MyPanel
MyPanel是一個子面板:他的大小由他父母的LayoutManager計算。
問題是,一旦父母的LayoutManager計算他的大小,我就需要通知MyPanel
需要通知它,因為我需要根據面板的大小初始化一些變量。

如果我在MyPanel構造函數中調用getSize() ,我得到(0,0)因為面板沒有“准備好”。
我什么時候應該調用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()

我能找到的唯一方法就是在paintComponent()方法中調用getSize() ...它確實有效,因為當調用paintComponent()時肯定會顯示面板但是我不能這樣做,因為我需要將一些變量初始化為我知道面板尺寸......但只有一次! paintComponent()將被多次調用...

最好的方法是使用ComponentListener。

請參見ComponentListener.componentResized(ComponentEvent)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM