我什么时候应该在java中使用JFrame.add(component)和JFrame.getContentPane().add(component)
2022-09-04 00:58:27
它们之间是否有区别,是否有任何条件应该使用一个而不是另一个?
它们之间是否有区别,是否有任何条件应该使用一个而不是另一个?
两个调用是相同的。在 Java 5 中,他们更改为将呼叫转接到内容窗格。jframe.add
来自 Java 5 发行说明:
最后,七年后,我们使jFrame.add等同于jFrame.getContentPane().add()。
另外,请参阅 javadocs。
根据我从Javadocs的理解,JFrame.add调用后者。这是一种方便的方法,可以解决AWT的框架和Swings JFrame之间的不兼容性。
JFrame 类与 Frame 稍微不兼容。与所有其他 JFC/Swing 顶级容器一样,JFrame 包含一个 JRootPane 作为其唯一的子级。根窗格提供的内容窗格通常应包含 JFrame 显示的所有非菜单组件。这与AWT框架的情况不同。作为便利添加及其变体,已删除和设置布局已被覆盖,以根据需要转发到内容窗格。这意味着您可以编写:
`frame.add(child);`
孩子将被添加到内容窗格中。内容窗格将始终为非空。尝试将其设置为 null 将导致 JFrame 引发异常。默认内容窗格将在其上设置边框布局管理器。有关添加、删除和设置 JFrame 的布局管理器的详细信息,请参阅 RootPaneContainer。