我有一个扩展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()
将被调用多次... 最佳答案