3

我正在学习 Swings,我对这一行感到困惑

GroupLayout layout=new GroupLayout(getContentPane());

现在我有 2 个问题

  1. getContentPane() 返回什么。[我看到了文档,变得更加困惑]
  2. 为什么我们将它传递给 GroupLayout ,我的意思是 getContentPane() 如何用于 Group Layout
4

2 回答 2

6

getContentPane() 返回什么

它返回组件的内容窗格

  • 要出现在屏幕上,每个 GUI 组件都必须是包含层次结构的一部分。包含层次结构是一棵以顶级容器为根的组件树。
  • 每个 GUI 组件只能包含一次。如果一个组件已经在一个容器中,并且您尝试将其添加到另一个容器中,则该组件将从第一个容器中删除,然后添加到第二个容器中。
  • 每个顶级容器都有一个内容窗格,一般来说,它包含(直接或间接)该顶级容器的 GUI 中的可见组件。
  • 您可以选择将菜单栏添加到顶级容器。按照惯例,菜单栏位于顶级容器内,但位于内容窗格之外。某些外观(例如 Mac OS 外观)使您可以选择将菜单栏放置在另一个更适合外观的位置,例如屏幕顶部。

你可以在这里阅读更多

为什么我们将它传递给 GroupLayout ,我的意思是 getContentPane() 如何用于 Group Layout

这就是 GroupLayout 的实现方式。

构造函数:

GroupLayout(Container host)

为指定的 Container 创建一个 GroupLayout。更多内容请参考javadoc

于 2013-08-13T09:49:24.010 回答
2
  1. getContentPane() 返回什么。[我看到了文档,变得更加困惑]

    JFrame 的 getContentPane() 函数返回 Container 对象,您可以在该对象中添加您希望在 JFrame 上的其他组件。

  2. 为什么我们将它传递给 GroupLayout ,我的意思是 getContentPane() 如何用于 Group Layout

    GroupLayout 布局=新 GroupLayout(getContentPane());

功能是

/**
 * Creates a {@code GroupLayout} for the specified {@code Container}.
 *
 * @param host the {@code Container} the {@code GroupLayout} is
 *        the {@code LayoutManager} for
 * @throws IllegalArgumentException if host is {@code null}
 */
public GroupLayout(Container host) {
    if (host == null) {
        throw new IllegalArgumentException("Container must be non-null");
    }
    honorsVisibility = true;
    this.host = host;
    setHorizontalGroup(createParallelGroup(Alignment.LEADING, true));
    setVerticalGroup(createParallelGroup(Alignment.LEADING, true));
    componentInfos = new HashMap<Component,ComponentInfo>();
    tmpParallelSet = new HashSet<Spring>();
}

此构造函数语句为指定容器创建 GroupLayout。

于 2013-08-13T09:51:00.923 回答