Читайте также: |
|
Менеджеры расположения необходимы для расположения компонентов GUI в контейнере для последующего представления их на экране монитора. Они обеспечивают основные возможности расположения, и использовать их гораздо проще, нежели задавать точные координаты и размеры каждого компонента GUI. Это позволяет программисту определять внешний вид программы только «в целом», а детали оформления передать на усмотрение менеджеров расположения.
В предыдущем приложении мы использовали менеджер расположения FlowLayout.
Класс FlowLayout — наследник класса Object — реализует интерфейс LayoutManager, который определяет методы, используемые менеджером расположения для расстановки и задания размеров компонентов GUI в контейнере.
Менеджер FlowLayout — самый простой из менеджеров расположения. Компоненты GUI располагаются этим менеджером в контейнере последовательно слева направо, в порядке их добавления в контейнер. По достижении края контейнера компоненты начинают располагаться со следующей строки. В классе FlowLayout возможно выравнивание компонентов GUI по левому и правому краям или по центру.
Менеджер расположения BorderLayout (менеджер расположения по умолчанию) настраивает компоненты в пяти областях: NORTH, SOUTH, EAST, WEST и CENTER (север, юг, восток, запад и центр; северу соответствует верхняя часть контейнера). Класс BorderLayout является наследником класса Object и реализует интерфейс LayoutManager2 (подинтерфейс LayoutManager, добавляющий несколько методов для улучшения процесса расположения).
В BorderLayout может быть добавлено до пяти компонентов — по одному в каждую область. Компонент, размещенный в каждой области, может быть контейнером, в который, в свою очередь, могут быть добавлены компоненты. Компоненты, расположенные в областях NORTH и SOUTH, располагаются по горизонтали до боковых сторон контейнера и имеют ту же высоту, что и расположенные в них компоненты. Области EAST и WEST располагаются по вертикали между областями NORTH и SOUTH и имеют ширину, равную ширине помещенных в них компонентов. Компонент, помещенный в область CENTER, занимает всю оставшуюся область расположения.
Рассмотрим пример использования компоновщика BorderLayout:
// BorderLayoutDemo.java
1 import java.awt.*;
2 import javax.swing.*;
3 public class BorderLayoutDemo extends JFrame {
4 private JButton buttons[];
5 private String names[] = { "Скрыть North",
"Скрыть South","Скрыть East", "Скрыть West",
"Скрыть Center" };
6 private BorderLayout layout;
7 public BorderLayoutDemo (){
8 super("Тестирование BorderLayout");
9 layout = new BorderLayout(5, 5);
10 Container container = getContentPane();
11 container.setLayout(layout);
12 buttons = new JButton[ names.length ];
13 for(int count =0;count<names.length;count++){
14 buttons[count]=new JButton(names[count]);
15 }
16 container.add(buttons[ 0 ], BorderLayout.NORTH);
17 container.add(buttons[ 1 ], BorderLayout.SOUTH);
18 container.add(buttons[ 2 ], BorderLayout.EAST);
19 container.add(buttons[ 3 ], BorderLayout.WEST);
20 container.add(buttons[ 4 ], BorderLayout.CENTER);
21 setSize(320, 200);
22 setVisible(true);
23 }
24 public static void main(String args[]){
25 BorderLayoutDemo application=new BorderLayoutDemo();
26 application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
27 }
28 }
Рис 18.2 Диалоговое окно
В строке 9 конструктор определяет менеджер расположения BorderLayout. Аргументы задают число пикселов, разделяющих компоненты по горизонтали – 5 пикселов и вертикали - 5 пикселов. В строке 9 используется метод setLayout для задания менеджера расположения layout. С помощью метода add кнопки добавляются в соответствующие области окна контейнера (строки 16-20).
Менеджер расположения GridLayout разбивает контейнер на таблицу (сетку) таким образом, что компоненты помещаются в определенную строку и определенный столбец. Класс GridLayout прямой наследник класса Object и реализует интерфейс LayoutManager. Каждый объект Component в GridLayout имеет одинаковую ширину и высоту. Компоненты добавляются в GridLayout, начиная с верхней левой ячейки таблицы и заполняются, двигаясь слева направо, пока не заполнится строка. После этого процесс продолжается в направлении слева направо на следующей строке и т.д.
Рассмотрим пример использования компоновщика GridLayout:
// PanelDemo.java
1 import java.awt.*;
2 import javax.swing.*;
3 public class PanelDemo extends JFrame{
4 private JPanel buttonPanel;
5 private JButton buttons[];
6 public PanelDemo () {
7 super("Пример использованияе панелей и
компоновщиков");
8 Container container = getContentPane();
9 buttons = new JButton[ 5 ];
10 buttonPanel=new JPanel();
11 buttonPanel.setLayout(new GridLayout(1,
buttons.length));
12 for(int count=0;count<buttons.length;count++){
13 buttons[count]=new JButton ("кнопка"+(count+1));
14 buttonPanel.add(buttons[count]);
15 }
16 container.add(buttonPanel, BorderLayout.SOUTH);
17 setSize(425,150);
18 setVisible(true);
19 }
20 public static void main(String args[]){
21 PanelDemo application= new PanelDemo();
22 application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
23 }
24 }
Рис 18.3 Диалоговое окно
В данном визуальном приложении используются два компоновщика: GridLayout - для расположения кнопок на панели buttonPanel (строка 11)и BorderLayout – для размещения самой панели в контейнере окна в области SOUTH (строка 16).
GridLayout использует два параметра - 1 и buttons.length=5, т.е. 1 строка и в ней 5 ячеек, что мы и видим на рис 18.3.
(!) Замечание: Каждый контейнер может иметь одновременно лишь один менеджер расположения. Различные контейнеры в одной программе могут иметь различные менеджеры расположения.
Дата добавления: 2015-10-29; просмотров: 129 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Графический интерфейс пользователя. | | | Слушатели (listeners) полей и кнопок. |