Опубликован: 01.11.2004 | Уровень: для всех | Доступ: свободно | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Лекция 27:

Библиотека классов JDK. Основы построения интерфейса пользователя на языке Java. Компоновки и элементы управления

Аннотация: В лекции рассматриваются принципы построения интерфейса пользователя на языке Java, описывается использование компоновок из пакета java.awt. Дается краткое описание основных классов элементов управления, используемых для реализации панелей, кнопок, текстовых компонентов и списков.

Менеджеры компоновок

Применение компоновок

При проектировании интерфейса пользователя с использованием языка Java компоненты размещаются в контейнерах. Самым простым примером контейнера может служить окно формы (класс Frame). В общем случае любой класс, наследуемый от класса контейнера java.awt.Container, является контейнером.

В языке Java для "плавающего" размещения компонентов, зависящего от размеров окна и размеров самих компонентов, введены классы компоновок.

Компоновка определяет порядок расположения компонентов на экране. Перед отображением объектов-контейнеров, содержащих другие компоненты, вызывается менеджер компоновки. Он располагает компоненты на экране в соответствующем порядке. Используемый менеджер компоновки указывается вызовом метода setLayout. Если менеджер компоновки не указан явно, то выбирается тот, что используется по умолчанию для данного класса контейнера.

Для того чтобы отключить использование менеджеров компоновки и перейти к явному указанию координат, следует вызвать метод setLayuot(null).

Пакеты java.awt и javax.swing предоставляют следующие классы менеджеров компоновки:

  • java.awt.FlowLayout - создает последовательное размещение объектов с указанным выравниванием и заданными между этими объектами интервалами.
  • java.awt.GridLayout - создает табличное размещение объектов с заданным числом строк и столбцов, объекты располагаются последовательно слева направо.
  • java.awt.GridBagLayout - создает гибкое табличное размещение объектов, позволяя размещать один компонент в нескольких ячейках.
  • java.awt.BorderLayout - создает размещение объектов по краю контейнера (вверху, внизу, слева, справа и в центре).
  • java.awt.CardLayout - создает компоновку контейнера, отображая одновременно только один компонент. Как правило, в качестве компонент для данного менеджера компоновки выступают панели.
  • javax.swing.ScrollPaneLayout - позволяет размещать компоненты на девяти различных областях; является компоновкой по умолчанию для класса ScrollPane.
  • javax.swing.ViewportLayout - является компоновкой по умолчанию для класса Jviewport.
  • javax.swing.BoxLayout - является компоновкой по умолчанию для класса Box.
  • javax.swing.OverlayLayout - позволяет размещать компоненты один над другим.

Для использования конкретного менеджера компоновки следует создать объект данного класса и установить созданную компоновку для данного контейнера, а затем добавить в контейнер другие компоненты.

Например:

GridBagLayout gridBagLayout1 = new GridBagLayout();
this.setLayout(gridBagLayout1);
Button button1 = new Button();
button1.setLabel("Кнопка 1");	
this.add(button1, 
         new GridBagConstraints(0, 0, 3, 1, 0.0, 0.0,
                          GridBagConstraints.CENTER,
                          GridBagConstraints.NONE, 
                          new Insets(0, 0, 0, 0), 
                          315, 0));

Метод setLayout следует квалифицировать именем контейнера, для которого устанавливается компоновка. Для класса контейнера, в котором выполняется данный метод, можно использовать ссылку this. В случае предварительного создания объекта "менеджер компоновки", его следует указать как параметр метода setLayout. В противном случае в качестве параметра метода setLayout следует указать оператор создания анонимного объекта "менеджер компоновки".

Например:

this.setLayout(gridLayout1);     
  // или 
this.setLayout(new GridLayout());

При использовании панели типа Panel методы объекта "менеджер компоновки" вызываются стандартным образом имя_объекта_менеджер_компоновки.имя_метода.

Например:

cardLayout1.show(Panel1,"Panel0");.

При использовании панели типа JPanel методы объекта "менеджер компоновки" вызываются с использованием метода getLayout.

Например:

((CardLayout)jPanel2.getLayout()).show(jPanel2,"jPanel0");

Александр Демьяненко
Александр Демьяненко

Можно ли сдавать один и тот же тест несколько раз?
Или же один и тот же тест можно сдать лишь однажды?

Максим Стогний
Максим Стогний

Добрый день!

Скажите, пожалуйста, если в терминологии объектно-ориентированного программирования функции также называются методами или методами - членами класса, в примере объявления указателя на метод использовали в формальном описании оба названия:

тип_метода (имя_класса::*имя_метода_указателя)
    (список параметров);
тип_функции (*имя_ функции_указателя)
    (список параметров);

при этом можно было  тип_функции во втором описании заменить на тип_метода? Т.е.:

тип_метода (*имя_ метода_указателя)
    (список параметров);