Margin / padding в GridBagLayout Java - PullRequest
       6

Margin / padding в GridBagLayout Java

15 голосов
/ 30 января 2011
  1. Можно ли установить поле / отступ в GridBagLayout для всей строки / столбца?Я использую вставку на объекте ограничений, однако, используя этот подход, мне нужно установить отступ снизу для каждого компонента.

  2. Можно ли дополнить весь контент в JFrame?Потому что теперь каждый компонент выровнен по фрейму.

  constraints.weightx = 2;
  constraints.weighty = 1;
  constraints.fill = GridBagConstraints.BOTH;
  addComponent(this, layout, constraints, questionPanel = new QuestionPanel(), 0, 0, 1, 1);

  constraints.weightx = 1;
  constraints.weighty = 1;
  constraints.fill = GridBagConstraints.BOTH;
  addComponent(this, layout, constraints, categoryPanel = new CategoryPanel(), 0, 1, 1, 1);

  constraints.weightx = 1;
  constraints.weighty = 0;
  constraints.fill = GridBagConstraints.HORIZONTAL;
  addComponent(this, layout, constraints, answerPanel = new AnswerPanel(), 1, 0, 2, 1);

  constraints.weightx = 1;
  constraints.weighty = 2;
  constraints.fill = GridBagConstraints.BOTH;
  addComponent(this, layout, constraints, tabPane = new JTabbedPane(), 2, 0, 2, 1);

  constraints.weightx = 1;
  constraints.weighty = 0;
  constraints.fill = GridBagConstraints.NONE;
  constraints.anchor = GridBagConstraints.SOUTHEAST;
  addComponent(this, layout, constraints, buttonPanel = new ButtonPanel(), 3, 1, 1, 1);

Я использую закрытый метод addComponent:

private void addComponent(Container context, GridBagLayout _layout, GridBagConstraints            _constraints, Component component, int row, int column, int width, int height) {
  _constraints.gridx = column;
  _constraints.gridy = row;
  _constraints.gridwidth = width;
  _constraints.gridheight = height;

  _layout.setConstraints(component, _constraints);
  context.add(component);
 }

Как можноЯ добавляю немного "воздуха (отступ / маржа)" между ячейками?

Ответы [ 2 ]

37 голосов
/ 18 июня 2011

Используйте свойство inset класса GridBagConstraints

Например:

GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(3,3,3,3);

Надеюсь, это то, что вы ищете.

7 голосов
/ 30 января 2011

Насколько я знаю, единственный способ сделать первый - это , чтобы установить объект Insets для каждого ограничения ... (Раскладка ручного кодирования явно не была разработана, чтобы быть простой в Java : P)

Но есть очень простой способ сделать второй, не возиться с какими-либо вставками или чем-либо еще: установите для макета contentPane значение FlowLayout с любыми вертикальными и горизонтальными промежутками, которые вы хотите, добавьте панель в contentPane и вместо этого добавить все на панель содержимого, добавьте его на новую панель.

...