Margin/padding в GridBagLayout Java
-
Можно ли установить margin/padding в GridBagLayout
для всей строки/столбца? Тем не менее, я использую вставку на объекте ограничений, используя этот подход, мне нужно установить прописку снизу на каждый отдельный компонент.
-
Можно ли заполнить все содержимое в 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);
}
Как я могу добавить некоторый "воздух (дополнение/край)" между ячейками?
Ответы
Ответ 1
Насколько я знаю, единственный способ сделать первый - установить объект Insets для каждого ограничения... (Ручная кодировка явно не была простой в Java: P)
Но есть очень простой способ сделать второй, не вмешиваясь в какие-либо вставки или что-то еще: установите макет contentPane в FlowLayout с любыми вертикальными и горизонтальными разрывами, которые вы хотите, добавьте панель в contentPane, а вместо этого добавив все в contentPane, добавьте его на новую панель.
Ответ 2
Используйте свойство inset
класса GridBagConstraints
Например:
GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(3,3,3,3);
Надеюсь, это то, что вы ищете.