【问题标题】:Mixed alignment with Java Swing's GroupLayout与 Java Swing 的 GroupLayout 混合对齐
【发布时间】:2011-02-09 20:27:24
【问题描述】:

我正在尝试在我的应用程序中构建一个 GUI 窗口。我想做的是有一个窗口,顶部有几个按钮,还有一个大的文本区域。像这样的:

+--------------------------------------------------+
| [button1] [button2]                    [button3] |
| +----------------------------------------------+ |
| | text area                                    | |
| |                                              | |
| |                                              | |
| |                                              | |
| +----------------------------------------------+ |
+--------------------------------------------------+

我快到了,使用 GroupLayout:

  layout.setHorizontalGroup(
    layout.createParallelGroup()
      .addGroup(layout.createSequentialGroup()
        .addComponent(button1)
        .addComponent(button2))
        .addComponent(closeWindow))
      .addComponent(textarea1)
  );

  layout.setVerticalGroup(
    layout.createSequentialGroup()
      .addGroup(layout.createParallelGroup()
        .addComponent(button1)
        .addComponent(button2)
        .addComponent(button3))
      .addComponent(textarea)
  );

问题是按钮 3 与其他两个对齐到左侧。我似乎无法弄清楚如何仅在一个按钮上指定对齐方式。我可以在整个按钮栏上执行 GroupLayout.Alignment.TRAILING,但这会击中所有 3 个按钮,这也不太正确。

那么正确的方法是什么?由于对齐仅适用于平行组,我认为拥有一个包含两个顺序组的 Horizo​​ntalGroup 不会有帮助吗?

我错过了什么?

【问题讨论】:

    标签: java swing grouplayout


    【解决方案1】:

    在您的顺序组中添加一个间隙。保持水平组不变:

    layout.setVerticalGroup(
        layout.createSequentialGroup()
          .addGroup(layout.createParallelGroup()
            .addComponent(button1)
            .addComponent(button2)
            .addPreferredGap(LayoutStyle.ComponentPlacement.RELATED, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(button3))
          .addComponent(textarea)
      );
    

    与这些参数的差距就像一个“弹簧”,占据了所有可用空间。

    【讨论】:

    • 应该是“LayoutStyle.ComponentPlacement.RELATED”,但除此之外,效果很好,谢谢:)
    • 您好,您应该只将该行添加到垂直组还是同时添加到水平组?
    【解决方案2】:

    尝试添加:

    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 1, Short.MAX_VALUE)
    

    在第二个按钮之后。 MAX_VALUE 将导致差距尽可能扩大。

    【讨论】:

      【解决方案3】:

      您想使用 addPreferredGap() ,它仅适用于顺序组。下面的代码为您提供了所需的布局。

          layout.setHorizontalGroup(
                  layout.createParallelGroup()
                          .addGroup( layout.createSequentialGroup()
                                  .addComponent( button1 )
                                  .addComponent( button2 )
                                  .addPreferredGap( LayoutStyle.ComponentPlacement.RELATED, GroupLayout.PREFERRED_SIZE, Short.MAX_VALUE )
                                  .addComponent( button3 ) )
                          .addComponent( textArea )
          );
          layout.setVerticalGroup(
                  layout.createSequentialGroup()
                          .addGroup( layout.createParallelGroup()
                                  .addComponent( button1 )
                                  .addComponent( button2 )
                                  .addComponent( button3 ) )
                          .addComponent( textArea )
          );
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-08-03
        • 2011-06-09
        • 2012-12-07
        • 2012-04-13
        • 1970-01-01
        • 2015-09-13
        • 2013-01-30
        • 1970-01-01
        相关资源
        最近更新 更多