在学习如何向 JFrame 添加控件时,很多人都会在教科书上看到这样的语句:
getContentPane().add(……);
然后有的人就产生了疑问,为什么要这么写呢?
好像我直接写 add(……); 也可以啊?
的确,现在直接写 add(……); 是可以的,但是在 java 1.4 还是更早的年代,
这一句 getContentPane() 却是必不可少的,
这里我就不得不吐槽一下当年的 Swing 的开发人员,
明明重载一下 JFrame 的 add 方法就能解决的问题,非要我们多写这么一句……
好在后来他们终于醒悟,重载了一下 JFrame 的 addImpl 方法:
protected void addImpl(Component comp, Object constraints, int index)
{
if(isRootPaneCheckingEnabled()) {
getContentPane().add(comp, constraints, index);
}
else {
super.addImpl(comp, constraints, index);
}
}
终于,我们不用再去 getContentPane() 了……
那这个神奇的 ContentPane 究竟是什么呢?
getContentPane().add(……);
然后有的人就产生了疑问,为什么要这么写呢?
好像我直接写 add(……); 也可以啊?
的确,现在直接写 add(……); 是可以的,但是在 java 1.4 还是更早的年代,
这一句 getContentPane() 却是必不可少的,
这里我就不得不吐槽一下当年的 Swing 的开发人员,
明明重载一下 JFrame 的 add 方法就能解决的问题,非要我们多写这么一句……
好在后来他们终于醒悟,重载了一下 JFrame 的 addImpl 方法:
protected void addImpl(Component comp, Object constraints, int index)
{
if(isRootPaneCheckingEnabled()) {
getContentPane().add(comp, constraints, index);
}
else {
super.addImpl(comp, constraints, index);
}
}
终于,我们不用再去 getContentPane() 了……
那这个神奇的 ContentPane 究竟是什么呢?
