gridbadlayout вертикальные промежутки - PullRequest
1 голос
/ 09 апреля 2011

Я делаю панель с кнопками сома.this is what it looks like now.

Но я хочу, чтобы кнопки касались друг друга, другими словами, я хочу, чтобы вертикальные промежутки исчезали.Но кнопки не должны быть изменены.Как я могу пойти дальше, чтобы сделать это?

Мой код:

this.setLayout(new GridBagLayout());
    GridBagConstraints constraints = new GridBagConstraints();

    constraints.fill = GridBagConstraints.HORIZONTAL;
    constraints.gridwidth = 2;
    constraints.weightx = 1D;
    constraints.weighty = 1D;
    constraints.gridx = 0;
    constraints.gridy = 0;
    int row = 0;
    for (MainAction actie : mainActions) {
        constraints.gridy = row;
        row++;
        SelectedActionButton but = new SelectedActionButton(selectedActionModel, actie);
        this.add(but, constraints);

    }
    constraints.gridwidth = 1;
    constraints.weightx = 0.5D;
    row *=2;
    for (AbstractAction actie : objectActions) {
        constraints.gridy = row/2;
        constraints.gridx = row%2;
        row++;
        SelectedObjectButton but = new SelectedObjectButton(selectedObjectModel, actie);
        but.setMargin(new Insets(0, 0, 0, 0));
        this.add(but, constraints);
    }

заранее спасибо

1 Ответ

1 голос
/ 09 апреля 2011

Измените следующую строку

constraints.weighty = 1D;

до

constraints.weighty = 0D;

исправит вашу проблему.

Обновление : для выравнивания всех кнопок на север вы можете добавить дополнительный компонент в последнем ряду, используя все доступное пространство:

constraints.weighty = 1D;
constraints.gridy = row;
this.add(Box.createGlue(), constraints);
...