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