Московский государственный университет имени М.В.Ломоносова
Опубликован: 01.11.2004 | Доступ: свободный | Студентов: 11271 / 455 | Оценка: 4.12 / 4.01 | Длительность: 19:20:00
ISBN: 978-5-9556-0077-9
Специальности: Программист
Лекция 27:

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

Класс GridLayout

Этот класс позволяет размещать компоненты в контейнере в виде таблицы. В каждой ячейке таблицы может быть размещен только один компонент.

Размер всех ячеек таблицы одинаков. Количество строк и столбцов таблицы определяется или в конструкторе, или вызовом методов setColumns и setRows. При этом, если эти значения не равны нулю, то количество столбцов является величиной вычисляемой и зависит от общего числа компонентов, добавленных на компоновку, и указанного числа строк. И только в том случае, если количество строк задано равным нулю, заданное количество столбцов будет учитываться менеджером компоновки.

На рис. 27.3 приведены примеры использования компоновки GridLayout.

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

Рис. 27.3. Пример компоновки GridLayout

Для компоновки GridLayout следует определять или количество строк, или количество столбцов.

Например:

this.setLayout(gridLayout1);
    gridLayout1.setRows(3);

Класс GridBagLayout

Этот класс используется менеджером компоновки GridBagLayout и определяет требования к размещению компонентов.

Компоновка GridBagLayout позволяет размещать компоненты в ячейках таблицы. Но, в отличие от менеджера компоновки GridLayout, ячейки таблицы могут различаться как по ширине, так и по высоте. Размещаемые компоненты могут занимать несколько ячеек.

Область, занимаемая компонентом, называется областью отображения. Ее размеры определяются значениями переменных gridwidth и gridheight (количество ячеек по горизонтали и по вертикали) класса GridBagConstraints.

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

На рис. 27.4 приведен пример компоновки, в которой кнопка 3 занимает 9 ячеек, но размер кнопки меньше размера области отображения.

Отступы, устанавливаемые объектом GridBagConstraints

Рис. 27.4. Отступы, устанавливаемые объектом GridBagConstraints

Если область отображения отличается от размера компонента, то для определения требований к размещению используется переменная fill.

Если размер размещаемого компонента меньше размера области отображения, то для указания размещения компонента используется переменная anchor, которая может принимать одно из следующих значений:

  • GridBagConstraints.CENTER
  • GridBagConstraints.NORTH
  • GridBagConstraints.NORTHEAST
  • GridBagConstraints.EAST
  • GridBagConstraints.SOUTHEAST
  • GridBagConstraints.SOUTH
  • GridBagConstraints.SOUTHWEST
  • GridBagConstraints.WEST
  • GridBagConstraints.NORTHWEST.

Переменная fill класса GridBagConstraint определяет, следует ли изменять размер компонента, и может принимать следующие значения:

  • GridBagConstraint.NONE - размер компонента не изменять (значение, используемое по умолчанию);
  • GridBagConstraint.HORIZONTAL - изменить размер по горизонтали, но не изменять его высоту;
  • GridBagConstraint.VERTICAL - изменить размер по вертикали, но не изменять его ширину;
  • GridBagConstraint.BOTH - увеличить размеры компонента до размера области отображения.

Переменные gridheight и gridwidth класса GridBagConstraint определяют число ячеек в столбце или строке соответственно. При этом константа GridBagConstraints.REMAINDER указывает, что компонент будет последним в столбце (строке), а константа GridBagConstraints.RELATIVE указывает, что компонент будет ближайшим к последнему.

Конструктор GridBagConstraints(int gridx, int gridy, int gridwidth, int gridheight, double weightx, double weighty, int anchor, int fill, Insets insets, int ipadx, int ipady) создает объект требований к размещению компонента, используемый менеджером компоновки, со всеми полями, имеющими заданные значения.

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

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

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

Добрый день!

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

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

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

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