Должен ли я создавать один объект GridBagConstraint для каждого компонента

#java

#java

Вопрос:

Как следует из названия, должен ли я создать один объект GridBagConstraint для каждого компонента? В

java как программировать 8-я редакция

они создают метод с именем AddComponent, однако, когда я читаю о GridBagLayout, я всегда заканчиваю тем, что читаю, что я не должен использовать один и тот же объект-ограничение. Чему я должен следовать?

Спасибо.

Ответ №1:

Совершенно безопасно повторно использовать один и тот же GridBagConstraint экземпляр для каждого компонента, добавленного с помощью add . В примере Sun GridBagLayout повторно используется один и тот же GridBagConstraint экземпляр. Просто имейте в виду, что будут использоваться все GridBagConstraint поля, поэтому вам может потребоваться сбросить некоторые из них.

Ответ №2:

Взглянув на вызовы метода GridBagLayout, которые вызываются при добавлении любого данного компонента, окончательный вызов переходит к:

 public void setConstraints(Component comp, GridBagConstraints constraints) {
    comptable.put(comp, (GridBagConstraints)constraints.clone());
}
  

Здесь GridBagLayout создает клон переданного объекта constraints, что означает, что каждый добавляемый компонент имеет свежую копию GridBagConstraints. Итак, должно быть совершенно нормально повторно использовать объект GridBagConstraints и вносить в него изменения по мере необходимости.

С уважением