Java GUI:关于getContentPane()方法和内容

时间:2013-05-24 21:54:28

标签: java swing jframe

在这段代码中:

JLabel emptyLabel = new JLabel("");
emptyLabel.setPreferredSize(new Dimension(175, 100));
frame.getContentPane().add(emptyLabel, BorderLayout.CENTER);

我可以看到它创建了一个新标签并将其添加到JFrame对象frame。 但我想了解getContentPane()做了什么,为什么需要它呢?

我看过this API,但我仍然不理解。

4 个答案:

答案 0 :(得分:25)

每个Swing顶级容器(和JInternalFrame)都有一个名为JRootPane的东西。这负责实际管理窗口的整体布局。

enter image description here

根窗格有多个图层,其中一个是内容窗格。当您向框架添加内容时(我认为是Java 5),它会自动添加到内容窗格中,在此之前,您必须自己调用getContentPane().add(...)

查看How to use RootPanes

答案 1 :(得分:9)

每个JPanel都是一个容器,因此要么将其添加到面板,然后将其添加到容器中,要么直接使用add(component)或使用getContentPane().add方法。两者都将组件添加到Java 7中的容器中(我不知道版本6是否存在此问题)。

答案 2 :(得分:5)

容器中有多个图层。您可以将图层视为覆盖容器的透明胶片。在Java Swing中,用于保存对象的图层称为内容窗格。对象将添加到容器的内容窗格层中。

getContentPane()方法检索内容窗格图层,以便您可以向其添加对象。内容窗格是由 Java运行时环境创建的对象。您不必知道要使用它的内容窗格的名称。当您使用 getContentPane() 时,内容窗格对象会在那里被替换,以便您可以对其应用方法。

答案 3 :(得分:2)

JFrame是与其他子组件放在一起的headcomponent。使用getContentPane()获取表示图形用户界面内容的组件。例如,JMenuBar放置在框架的contentPane旁边的另一个区域中。