【问题标题】:Java GUI: about getContentPane( ) method and contentJava GUI:关于 getContentPane() 方法和内容
【发布时间】:2013-05-20 14:19:43
【问题描述】:

在这段代码中:

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

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

我看了this API,但还是没看懂。

【问题讨论】:

标签: java swing jframe


【解决方案1】:

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

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

看看How to use RootPanes

【讨论】:

  • +1,不错的帖子。像我这样的新手也能理解 :) 谢谢
【解决方案2】:

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

【讨论】:

【解决方案3】:

一个容器里面有好几层。您可以将层视为覆盖在 容器 上的透明薄膜。在 Java Swing 中,用于保存对象的层称为 内容窗格。对象被添加到 容器 的内容窗格层。

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

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 2011-09-23
      • 2012-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      相关资源
      最近更新 更多