JWindow
组件包含一个 JRootPane
作为其仅有的子组件。contentPane
应为 JWindow
的所有子窗口的父窗口。作为一个便捷的 add
及其变体,remove
和 setLayout
已被重写并根据需要转发到 contentPane
。这意味着您可以写入:
window.add(child);
该子窗口也被添加到 contentPane。
上述为jdk帮助文档,但是发现在文档中根本没有add方法,add方法仍然在java.awt.Component中实现,反而有一个addImpl方法,查看源代码,在JWindow.java中同样没有发现add方法,addImpl方法代码如下:
确认文档描述存在问题,需要先进行setRootPaneCheckingEnabled(boolean enabled) ,才能够至少用addImpl,add不可用
不过需要注意protected:
protected void setRootPaneCheckingEnabled (boolean enabled)
设置对 add
和 setLayout
的调用是否转发到 contentPane
。