我有一个扩展MyPanel的类JPanel
MyPanel是一个子面板:其大小是由其父代的LayoutManager来计算的。
问题是,我的父母的MyPanel计算出他的身高后,我需要立即通知LayoutManager
需要通知它,因为我需要根据面板的大小初始化一些变量。
如果我在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()
我能找到的唯一方法是在getSize()方法中调用paintComponent() ...它肯定可以工作,因为在调用paintComponent()时确实可以显示面板,但是我不能这样做,因为我需要将一些变量初始化为我一知道面板的尺寸,但是只有一次! paintComponent()将被调用多次...

最佳答案

ComponentListener.componentResized()

10-01 13:51