问题描述
这更多是一个理论问题。
我正在阅读JFrame类的文档,它有一个名为setRootPaneCheckingEnabled()的方法,其目的似乎是控制将add()和setLayout()调用转发到JFrame的内容窗格。
如果将true传递给此方法,则转发对add()和setLayout()的调用,如果传递false,则这些调用直接在JFrame上进行。
我不知道为什么有人希望add()和setLayout()调用直接在JFrame上而不是在内容窗格上进行操作的原因。
有人可以让我知道这些原因吗?
1楼
在Java 1.5之前的版本中,您需要编写frame.getContentPane().add(...) 。
看起来很简单,但经常做就很繁琐。
来吧1.5,他们增加了简单地使用frame.add(...)并将那些调用转发到contentPane 。
看起来似乎不多,但实际上,它可能是最受质疑和要求的Swing功能之一。
这对于新的编码人员来说也是一个很大的挫败感,他们不了解JFrame实际上是一个复合组件,并且会浪费很多时间来试图弄清为什么什么都不起作用。
而且,在过去,要获得像样的IDE并具有自动完成功能实际上是一件困难的事情,所以,是的,长手打字会给您的手腕带来完全的痛苦。