5

GroupLayout (他のレイアウトではない) を使用して GUI を構築する必要があります。GUI は次のようになります。

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

| FFIEEELLLDD4 FIELDDDDDD5  |

| FIEEEEEEEEEEEEEEELDDDD 6  |
_____________________________

フィールド 1 から 3 はそれぞれ 1 の長さを取り、フィールド 4 と 5 はそれぞれ 1.5 の長さを取り、フィールド 6 は 3 の長さを取ります。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();
    }

コードの結果は次のようになりますが、これは私が望んでいたものではありません。1、2、3 がマージされています。4 と 5 も重なります。

申し訳ありませんが、出力 GUI の写真を追加したいのですが、評判が 10 未満であるため、写真を添付できません :(.

4

1 に答える 1

10

一部の括弧を修正し、コンポーネントのサイズ変更のヒントを追加しました:

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));

ここに画像の説明を入力

于 2013-04-22T14:37:27.703 に答える