问题描述
这更多是一个理论问题。
我正在阅读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并具有自动完成功能实际上是一件困难的事情,所以,是的,长手打字会给您的手腕带来完全的痛苦。