【问题标题】:Building GUI using GroupLayout in Java在 Java 中使用 GroupLayout 构建 GUI
【发布时间】:2013-04-15 11:08:14
【问题描述】:

我需要使用 GroupLayout(而不是其他布局)构建一个 GUI。 GUI 将如下所示:

----------------------------
| field 1  field 2  field 3 |

| FFIEEELLLDD4 FIELDDDDDD5  |

| FIEEEEEEEEEEEEEEELDDDD 6  |
_____________________________

字段 1 - 3 各取 1 个长度,字段 4 和 5 各取 1.5 个长度,字段 6 取 3 个长度。这三个组在开头和结尾都是对齐的。

我一直在提到这个http://docs.oracle.com/javase/tutorial/uiswing/layout/group.html

为简单起见,我将使用 JLabels 作为字段的占位符。

到目前为止,这是我的代码,但我没有得到想要的 GUI。

public class RecorderGUI extends JFrame {
    private final JLabel one;
    private final JLabel two;
    private final JLabel three;
    private final JLabel four;
    private final JLabel five;
    private final JLabel six;
public RecorderGUI() {
    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    GroupLayout layout = new GroupLayout(panel);
    panel.setLayout(layout);

    one = new JLabel("one");
    two = new JLabel("two");
    three = new JLabel("three");
    four = new JLabel("four");
    five = new JLabel("five");
    six = new JLabel("six");
        layout.setHorizontalGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup())
                .addComponent(one)
                .addComponent(two)
                .addComponent(three)
            .addGroup(layout.createSequentialGroup())
                .addComponent(four)
                .addComponent(five))
            .addComponent(six));

        layout.setVerticalGroup(layout.createSequentialGroup()
            .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
                .addComponent(one)
                .addComponent(two)
            .addComponent(three))
        .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
            .addComponent(four)
            .addComponent(five))
            .addComponent(six));
        frame.add(panel);
        frame.pack();
        frame.setVisible(true);
    }
    public static void main(final String[] args) {
        RecorderGUI GUI = new RecorderGUI();
    }

代码导致以下结果,这不是我想要的: 一、二、三合并在一起;四和五也重叠。

抱歉,我想添加输出 GUI 的图片,但我无法附上图片,因为我的声望低于 10 :(.

【问题讨论】:

  • 一、二、三合并在一起;四个和五个重叠。
  • 为什么要限制GroupLayout
  • 我认为这是一个冲突。 GroupLayout 布局 = new GroupLayout(panel); panel.setLayout(布局);

标签: java swing grouplayout


【解决方案1】:

修复了一些括号并为组件添加了调整大小的提示:

layout.setHorizontalGroup(layout
    .createParallelGroup(GroupLayout.Alignment.LEADING)
    .addGroup(layout.createSequentialGroup()
        .addComponent(one, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        .addComponent(two, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        .addComponent(three, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    .addGroup(layout.createSequentialGroup()
        .addComponent(four, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        .addComponent(five, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
    .addComponent(six, 0, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));

layout.setVerticalGroup(layout.createSequentialGroup()
    .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
        .addComponent(one).addComponent(two).addComponent(three))
    .addGroup(layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
        .addComponent(four).addComponent(five))
    .addComponent(six));

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2012-07-11
  • 2020-12-02
  • 1970-01-01
  • 2010-11-10
  • 1970-01-01
  • 2011-03-12
  • 2012-02-09
  • 1970-01-01
相关资源
最近更新 更多