我必须写: jframe.getContentPane().add(button);
但我发现当我只写它时它也有效
jframe.add(按钮);
这两种方法有什么区别?写 JFrame.getContentPane().add(button); 是否有利??
这是一个品味问题。我总是使用 getContentPane().add(..),因为我认为它更容易阅读/知道实际发生了什么
尝试这个........
在 Java 1.5 到来之前,使用了 jframe.getContentPane().add(button) ......这是合法的做法......
但是从 Java 1.5 起,包括 myframe.add(button)... 也是一种合法的做法。 就像使用 Classname 访问静态变量是合法的做法一样。 ..但是您仍然可以使用类实例访问静态变量...
因此,您应该知道应该将诸如等元素JButton
添加JTextArea
到Container
您的方法中:
getContentPane()
返回Container
此帧的对象。因此,这两种方法的工作方式相同,但您应该使用第二种方法。
如果您将拥有包含许多元素的大型应用程序,则第一种方法的可读性较差,通常建议使用第二种方法。
区别不是:
Jframe.add() - 将指定的组件附加到此容器的末尾。这是 Container.addImpl 的一种便捷方法。
类 javadocJFrame
对此很清楚
JFrame 类与 Frame 略有不兼容。与所有其他 JFC/Swing 顶级容器一样,JFrame 包含一个 JRootPane 作为其唯一的子项。根窗格提供的内容窗格通常应包含 JFrame 显示的所有非菜单组件。这与 AWT Frame 的情况不同。作为方便的 add 及其变体,remove 和 setLayout 已被覆盖以根据需要转发到 contentPane。这意味着您可以编写:
frame.add(child);
并且孩子将被添加到 contentPane。