logo search
Хабибуллин

Панель JPanel

Класс JPanel реализует простую невидимую панель для размещения компонентов. Он очень похож на панель класса Panel библиотеки AWT.

Конструктор по умолчанию JPanel() применяет к панели менеджер размещения компонентов FlowLayout. Напомним, что этот менеджер располагает компоненты рядами, укладывая их слева направо и сверху вниз как кирпичи в порядке обращения к методам add(), устанавливая при этом такой размер каждого компонента, который возвращает метод getPreferredSize() этого компонента. При изменении размера панели компоненты перестраиваются, увеличивая или уменьшая количество рядов. Если метод getPreferredSize() не определен, то компонент не будет виден на панели. В таком случае надо обратиться к методу setPreferredSize(Dimension) компонента и установить его подходящий размер.

Конструктор JPanel(LayoutManager) применяет к панели заданный менеджер размещения. Это можно сделать и позднее методом setLayout(LayoutManager), унаследованным от

класса Container.

Панель класса JPanel применяет двойную буферизацию (double buffering) для перерисовки своего содержимого. Описание метода двойной буферизации мы дадим в главе 20. Если двойная буферизация не нужна, то следует создать панель конструктором

JPanel(false).

Наконец, четвертый конструктор, JPanel(LayoutManager, boolean), задает менеджер размещения и применение двойной буферизации.

Как правило, применение панели ограничивается созданием ее экземпляра и размещением на ней компонентов унаследованными от класса Container методами:

add(Component comp) — добавляет компонент comp в конец списка компонентов, лежащих на панели;

add(Component comp, Object constraints) — добавляет компонент comp в конец списка

компонентов, лежащих на панели, и передает менеджеру размещения параметры constraints, суть которых зависит от типа менеджера;

add(Component comp, int ind) — вставляет компонент comp в указанную позицию ind списка компонентов панели;

add(Component comp, Object constraints, int ind) — содержит все эти параметры.