2012-01-30 3 views
1

Я разрабатываю одно приложение для работы с Java с множеством панелей с разными и одинаковыми макетами. Теперь, когда я хочу установить новый макет панели, я всегда создаю новый макет. НАПРИМЕР.Макеты в настольном приложении

JPanel panel = new JPanel(new GridLayout(0, 1)); 

Является ли правильное решение для создания некоторых LayoutFactory и здесь создать все макеты, которые мне нужны, а затем установить на панель?

+0

http://docs.oracle.com/javase/tutorial/uiswing/index.html –

+0

нет необходимости в заводе (некоторые не могут быть разделены) – kleopatra

+0

и как быть с макетом, который может быть общим? E.G Когда я выполняю поиск в своем проекте для flowLayout, я обнаружил, что создаю около 30 экземпляров этого макета. – hudi

ответ

2

1) прокладка JPanel новой GridLayout(0, 1) должно быть таким же, как BorderLayout.CENTER или возможно с помощью BoxLayout, в этом случае вы размещаете только один JComponent для всей JPanel

2) простейший путь лежал JComponents по Nested Layout, где каждый из контейнера могут иметь разные LayoutManager, так же LayoutManager или их комбинации

3) с помощью GridBagLayout или MigLayout возможно (в большинстве случаев) место каждый раз JComponents время для всего содер ner или JPanel

+0

# 1 'GridLayout (0,1)' отличается от 'BorderLayout.CENTER'. Он определяет макет с одним столбцом и количеством равных строк по мере добавления элементов. Даже «GridLayout (1,1)» не имеет только одну ячейку, когда добавлено больше элементов, она динамически добавляет столбцы. 'BoxLayout' имеет разные эффекты, он не изменяет размеры компонентов. # 3 JGoodies FormLayout также является хорошей альтернативой для этой цели. –

0

hudi, если вы хотите сделать свой код более кратким, вы можете написать вспомогательные методы, которые создают и назначают макеты. Если вы настраиваете макеты только в одном классе, вспомогательные методы могут быть private методов этого класса. Или, если вы настраиваете макеты в разных классах, вы можете добавить вспомогательные методы protected в общий суперкласс (если он у вас есть) или как методы static в классе утилиты.

Опубликуйте информацию о своем коде, и мы можем предложить более конкретные предложения.

Смежные вопросы