GroupLayout layout = new GroupLayout(getContentPane())

时间:2013-08-13 09:41:04

标签: java swing grouplayout

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

GroupLayout layout=new GroupLayout(getContentPane());

现在我有两个问题

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

2 个答案:

答案 0 :(得分:6)

  

getContentPane()返回什么

它返回组件的内容窗格

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

您可以阅读更多here

  

为什么我们将它传递给GroupLayout,我的意思是getContentPane()是怎样的   用于分组布局

这就是GroupLayout的实施方式。

构造

GroupLayout(Container host)

为指定的Container创建GroupLayout。请参考javadoc for more

答案 1 :(得分:2)

  1. getContentPane()返回什么。 [我看到了文档并且更加困惑]

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

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

    GroupLayout layout = new GroupLayout(getContentPane());

  3. 功能

    /**
     * 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。