3

我正在阅读 Head First Java。在介绍 GUI 时(阅读本书的读者请参见第 354 页),作者写道:

frame.getContentPane().add(button);

“您不会直接将东西添加到框架中。将框架视为窗户周围的装饰,然后您将东西添加到窗格中。”

在查看JFrame 的 Java API 条目后,我看到 JFrame 是 Component 的子类,并且从 Component 继承了 add(Component),因此可以简单地编写:

frame.add(button);

为什么书中推荐使用frame.getContentPane.add(button)?

提前致谢!

4

1 回答 1

6

可以调用add(...)JFrame,但它实际上是getContentPane().add(...)根据 JFrame API 调用的,也称为“语法糖”。但是要明白,这样做实际上并不是将它直接添加到 JFrame,而是实际上将它添加到 contentPane。这一点很重要,因为 JFrame 是由组件组成的,正如JFrame/顶级窗口 Swing 教程很好地解释的那样。

我自己,我更喜欢文字getContentPane().add(...),因为并非所有 JFrame 行为都会以这种方式工作,例如setBackground(...),因此文字提醒我确切地在做什么。

于 2013-04-03T01:02:08.833 回答