Менеджер BorderLayout

 

Менеджер размещения BorderLayout делит контейнер на пять неравных областей, полностью заполняя каждую область одним компонентом. Области получили географические названия NORTH, SOUTH, WEST, EAST И CENTER.

Метод add о в случае применения BorderLayout имеет два аргумента: ссылку на компонент сотр и область region, в которую помещается компонент — одну из перечисленных выше констант:

add(Component comp, String region)

Обычный метод add (Component comp) с одним аргументом помещает компонент В область CENTER .

В классе два конструктора:

  • BorderLayout () — между областями нет промежутков;
  • BorderLayout(int hgap int vgap) — между областями остаются горизонтальные hgap и вертикальные vgap промежутки, задаваемые в пикселах.

Если в контейнер помещается менее пяти компонентов, то некоторые области не используются и не занимают места в контейнере. Если не занята область CENTER , то компоненты прижимаются к границам контейнера.

В листинге 11.2 создаются пять кнопок, размещаемых в контейнере. Заметьте отсутствие установки менеджера в контейнере setLayout () — менеджер BorderLayout установлен в контейнере Frame по умолчанию.

 

Листинг 11.2. Менеджер размещения BorderLayout 

import java.awt.*; 

import ]ava.awt.event.* ;

class BorderTest extends Frame{ 

BorderTest(String s){ super(s);

add(new Button(«North»), BorderLayout.NORTH); 

add(new Button(«South»), BorderLayout.SOUTH); 

add(new Button(«West»), BorderLayout.WEST); 

add(new Button(«East»), BorderLayout.EAST); 

add(new Button(«Center»)); 

setSize(300, 200); 

setVisible(true); 

public static void main(String[] args){

Frame f= new BorderTest(» Менеджер BorderLayout»); 

f.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent ev){

System.exit(0); 

}

});

}

Менеджер размещения BorderLayout кажется неудобным: он располагает не больше пяти компонентов, последние растекаются по всей области, области имеют странный вид. Но дело в том, что в каждую область можно поместить не компонент, а панель, и размещать компоненты на ней, как сделано в листинге 11.3. Напомним, что на панели Panel менеджер размещения по умолчанию FiowLayout.

 

Листинг 11.3. Сложная компоновка 

import j ava.awt.*; 

import java.awt.event.*;

class BorderPanelTest extends Frame{ 

BorderPanelTest(String s){ 

super(s);

    // Создаем панель р2 с тремя кнопками 

Panel p2 = new Panel();

p2.add(new Button(«Выполнить»)); 

p2.add(new Button(«Отменить»)); 

p2.add(new Button(«Выйти»));

Panel pi = new Panel ();

pi.setLayout(new BorderLayout());

    // Помещаем панель р2 с кнопками на «юге» панели р1 

p1.add(p2, BorderLayout.SOUTH);

    // Поле ввода помещаем на «севере» 

p1.add(new TextFieldt»Поле ввода», 20), BorderLayout.NORTH);

    // Область ввода помещается в центре 

p1.add(new TextArea(«Область ввода», 5, 20, TextArea.SCROLLBARS_NONE), BorderLayout.CENTER);

add(new Scrollbar(Scrollbar.HORIZONTAL), BorderLayout.SOUTH); 

addfnew Scrollbar(Scrollbar.VERTICAL), BorderLayout.EAST);

    // Панель p1 помещаем в «центре» контейнера add(p1, BorderLayout.CENTER); 

setSizePOO, 200); 

setVisible(true) ; 

public static void main(String[] args){

Frame f= new BorderPanelTest(» Сложная компоновка»); 

f.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent ev){

System.exit(0); 

}

}); 

}