4

我必须写: jframe.getContentPane().add(button);

但我发现当我只写它时它也有效

jframe.add(按钮);

这两种方法有什么区别?写 JFrame.getContentPane().add(button); 是否有利??

4

4 回答 4

3

这是一个品味问题。我总是使用 getContentPane().add(..),因为我认为它更容易阅读/知道实际发生了什么

于 2012-07-05T18:20:19.823 回答
2

尝试这个........

在 Java 1.5 到来之前,使用了 jframe.getContentPane().add(button) ......这是合法的做法......

但是从 Java 1.5 起,包括 myframe.add(button)... 也是一种合法的做法。 就像使用 Classname 访问静态变量是合法的做法一样。 ..但是您仍然可以使用类实例访问静态变量...

于 2012-07-05T18:26:25.000 回答
1

因此,您应该知道应该将诸如等元素JButton添加JTextAreaContainer您的方法中:

getContentPane()

返回Container此帧的对象。因此,这两种方法的工作方式相同,但您应该使用第二种方法。

如果您将拥有包含许多元素的大型应用程序,则第一种方法的可读性较差,通常建议使用第二种方法。

区别不是:

Jframe.add() - 将指定的组件附加到此容器的末尾。这是 Container.addImpl 的一种便捷方法。

于 2012-07-05T18:23:33.093 回答
1

类 javadocJFrame对此很清楚

JFrame 类与 Frame 略有不兼容。与所有其他 JFC/Swing 顶级容器一样,JFrame 包含一个 JRootPane 作为其唯一的子项。根窗格提供的内容窗格通常应包含 JFrame 显示的所有非菜单组件。这与 AWT Frame 的情况不同。作为方便的 add 及其变体,remove 和 setLayout 已被覆盖以根据需要转发到 contentPane。这意味着您可以编写:

   frame.add(child);

并且孩子将被添加到 contentPane。

于 2012-07-05T18:31:25.327 回答