Прикладные методы класса Collections
Поможем в ✍️ написании учебной работы
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Методы поиска минимума и максимума
min ( Collection coll ) , max ( Collection coll ) – возвращает элемент коллекции coll, обладающий «наименьшим» или «наибольшим» значением в соответствии с критерием естественного упорядочивания элементов этой коллекции.

Работа со списками
reverse ( List list ) – изменяет порядок размещения элементов в списке list на противоположный.
shuffle ( List list ) – «тасует» элементы списка list случайным образом. Все перестановки элементов осуществляются с приблизительно равной вероятностью.
fill ( List list , Object elem ) – заменяет каждый элемент списка list значением elem.
copy ( List dst , List src ) – копирует каждый элемент списка-источника src в список получатель dst. Если список dst слишком мал, чтобы вместить все элементы списка src, выбрасывается исключение типа IndexOutOfBoundsException.
nCopies ( int n , Object elem ) – возвращает список, не допускающий изменения, который содержит n-элементов со значением, равным elem.

Сортировка списков
sort ( List list ) – сортирует список list в соответствии с правилом естественного упорядочения его элементов.

Поиск элементов в списке
binarySearch ( List list , Object key )  - использует алгоритм бинарного поиска для отыскания в списке list объекта-ключа key и возвращает индекс найденного объекта. Элементы списка должны располагаться в соответствии с правилом естественного упорядочения. Если объект не найден, возвращается отрицательное значение, соответствующее подходящей позиции вероятной вставки объекта.

Прочие прикладные методы









Класс Arrays

Класс Arrays предлагает ряд полезных статических методов, предназначенных для работы с массивами.

• Представление массива в виде объекта-списка
asList

• Поиск элемента в массиве
binarySearch – осуществляет поиск заданного ключа в отсортированном массиве. Возвращает индекс найденного ключа либо отрицательное значение подходящей позиции вероятной вставки ключа, если ключ не найден.

• Сравнение массивов по элементам
equals – возвращает true, если две ссылки на массивы, переданные в качестве параметров, указывают на один и тот же объект, обе равны null либо массивы обладают одинаковыми длиной и содержимым.

• Заполнение массива элементами
fill – присваивает всем элементам массива одно и тоже значение

• Сортировка массива
sort – сортирует массив.






Апплеты

Апплет – небольшое приложение, доступное на Интернет-сервере, транспортирующееся по Интернет, автоматически устанавливающееся и выполняемое как часть HTML-документа. После доставки к клиенту апплет имеет ограниченный доступ к ресурсам системы.

Ниже приведен исходный код канонической программы HelloWorld, оформленной в виде апплета:

Пример 42.

import java . awt .*;

import java.applet.*;

/*

<applet code="HelloWorldApplet" height=40>

</applet>

*/

public class HelloWorldApplet extends Applet {

public void paint(Graphics g) {

g.drawString("Hello World!", 20, 20);

}

}

Этот апплет начинается двумя строками, которые импортируют все пакеты иерархий java.applet и java.awt. Дальше в нашем примере присутствует метод paint, замещающий одноименный метод класса Applet. При вызове этого метода ему передается аргумент, содержащий ссылку на объект класса Graphics. Последний используется для прорисовки нашего апплета. С помощью метода drawString, вызываемого с этим объектом типа Graphics, в позиции экрана (20,20) выводится строка "Hello World". Для того, чтобы с помощью браузера запустить этот апплет, следует написать несколько строк html-текста.

<applet code="HelloWorldApplet" height=40>

</applet>

Вы можете поместить эти строки в отдельный html-файл, либо вставить их в текст этой программы в виде комментария и запустить программу appletviewer с его исходным текстом в качестве аргумента. На экране появится строка приветствия.

Тэг <applet>

Тег <applet> используется для запуска апплета как из HTML-документа, так и из программы appletviewer. Программа appletviewer выполняет каждый найденный ей тег <applet> в отдельном окне, в то время как браузеры позволяют разместить на одной странице несколько апплетов. Синтаксис тэга <APPLET> в настоящее время таков:

 

Пример 43.

<APPLET

CODE = appletFile

OBJECT = appletSerialFile

WIDTH = pixels

HEIGHT = pixels

[ARCHIVE = jarFiles]

[CODEBASE = codebaseURL]

[ALT = alternateText]

[NAME = appletInstanceName]

[ALIGN = alignment]

[VSPACE = pixels]

[HSPACE = pixels]

>

[< PARAM NAME = AttributeNamel VALUE = AttributeValuel >]

[< PARAM NAME = AttributeName2 VALUE = AttributeValue2 >]

[HTML-текст, отображаемый при отсутствии поддержки Java]

</APPLET>

CODE = appletClassFile.

CODE - обязательный атрибут, задающий имя файла, в котором содержится оттранслированный код апплета. Имя файла задается относительно codebase, то есть либо от текущего каталога, либо от каталога, указанного в атрибуте CODEBASE. Вместо этого атрибута может использоваться атрибут OBJECT.

OBJECT = appletClassSerialFile

Указывает имя файла, содержащего сериализованный апплет, из которого последний будет восстановлен. При запуске определяемого таким образом апплета должен вызываться не метод init(), а метод start(). Для апплета необходимо задать либо атрибут CODE, либо атрибут OBJECT, но задавать эти атрибуты одновременно нельзя.

WIDTH = pixels

HEIGHT = pixels

WIDTH и HEIGHT - обязательные атрибуты, задающие начальный размер видимой области апплета.

ARCHIVE = jarFiles

Этот необязательный атрибут задает список jar-файлов (разделяется запятыми), которые предварительно загружаются в Web-броузер. В этих архивных файлах могут содержаться файлы классов, изображения, звуки и любые другие ресурсы, необходимые апплету.

CODEBASE = codebaseURL

CODEBASE - необязательный атрибут, задающий базовый URL кода апплета, являющийся каталогом, в котором будет выполняться поиск исполняемого файла апплета (задаваемого в признаке CODE). Если этот атрибут не задан, по умолчанию используется каталог данного HTML-документа. CODEBASE не обязательно должен указывать на тот же узел, с которого был загружен HTML-документ.

ALT = alternateAppletText

Признак ALT - необязательный атрибут, задающий короткое текстовое сообщение, которое должно быть выведено (как правило, в виде всплывающей подсказки при нахождении курсора мыши над областью апплета) в том случае, если используемый браузер распознает синтаксис тега <applet> , но выполнять апплеты не умеет. Это не то же самое, что HTML-текст, который можно вставлять между <applet> и </applet> для браузеров, вообще не поддерживающих апплетов.

NAME = appletInstanceName

NAME - необязательный атрибут, используемый для задания имени для данного экземпляра апплета. Присвоение апплетам имен необходимо для того, чтобы другие апплеты на этой же странице могли находить их и общаться с ними.

ALIGN = alignment

ALIGN - необязательный атрибут, задающий стиль выравнивания апплета. Его возможные значения - LEFT, RIGHT, TOP, TEXTTOP, MIDDLE, ABSMIDDLE, BASELINE, BOTTOM, ABSBOTTOM.

VSPACE = pixels

HSPACE = pixels

Эти необязательные атрибуты задают ширину свободного пространства в пикселях сверху и снизу апплета (VSPACE), и слева и справа от него (HSPACE).

PARAM NAME = appletAttribute1 VALUE = value1

Этот тег дает возможность передавать из HTML-страницы апплету необходимые ему аргументы.

Передача параметров

Метод getParameter(String) возвращает значение типа String, соответствующее указанному имени параметра. Если вам в качестве параметра требуется значение какого-либо другого типа, вы должны преобразовать строку-параметр самостоятельно (см. пример 44).

Пример 44.

HTML-код

<applet code=Testing height=40>

<param name=fontName value=Univers>

<param name=fontSize value=14>

<param name=leading value=2>

<param name=accountEnabled value=true>

</applet>

Код в апплете

String fontName = getParameter("fontName");

int fontSize = Integer.parseInt(getParameter("fontSize"));

Float leading = Float.valueOf(getParameter("leading"));

Boolean paidUp = Boolean.valueOf(getParameter("accountEnabled"));

Отладочная печать

• Может выводиться на консоль и в статусную строку программы просмотра апплетов.

• В браузере можно получить доступ к консоли:
Netscape: Options>Show Java Console
IE: Tools>Sun Java Console



Класс Applet

Класс java.applet.Applet является классом-предком для любого апплета, включаемого в web-страницу или просматриваемого в Java Applet Viewer. При наследовании обычно переопределяется ряд методов.

Скелетная структура апплета

void init ()
Вызывается один раз при инициализации.

void start ().
Вызывается каждый раз при выводе документа, содержащего апплет, на экран

void stop ()
Вызывается каждый раз, когда браузер покидает документ, содержащий апплет.

void destroy ()
Вызывается один раз, когда выполнение апплета заканчивается.





Методы отрисовки

public void paint(Graphics g) - Метод paint вызывается каждый раз при повреждении апплета. AWT следит за состоянием окон в системе и замечает такие случаи, как, например, перекрытие окна апплета другим окном. В таких случаях, после того, как апплет снова оказывается видимым, для восстановления его изображения вызывается метод paint.

public void update(Graphics g) - Используемый по умолчанию метод update класса Applet сначала закрашивает апплет цветом фона по умолчанию, после чего вызывает метод paint. Если вы в методе paint заполняете фон другим цветом, пользователь будет видеть вспышку цвета по умолчанию при каждом вызове метода update - то есть, всякий раз, когда вы перерисовываете апплет. Чтобы избежать этого, нужно заместить метод update. В общем случае нужно выполнять операции рисования в методе update, а в методе paint, к которому будет обращаться AWT, просто вызвать update.

public void repaint() – Метод repaint используется для принудительного перерисовывания апплета. Этот метод, в свою очередь, вызывает метод update. Однако, если ваша система медленная или сильно загружена, метод update может и не вызваться. Близкие по времени запросы на перерисовку могут объединяться AWT.

public void repaint(long tm) - Вы можете вызывать метод repaint, устанавливая крайний срок для перерисовки (этот период задается в миллисекундах относительно времени вызова repaint).

public void repaint(int x, int y, int width, int height) - Эта версия ограничивает обновление экрана заданным прямоугольником, изменены будут только те части экрана, которые в нем находятся.

public void repaint(long tm, int x, int y, int width, int height) - Этот метод - комбинация двух предыдущих.

Класс Graphics

java.awt.Graphics - базовый класс, предназначенный для рисования в контекстах компонентов, в изображениях в памяти и т.д.

void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle) - Этот метод вычерчивает (fillArc заполняет) дугу, ограниченную прямоугольником (x,y,width, height), начинающуюся с угла startAngle и имеющую угловой размер arcAngle. Ноль градусов соответствует положению часовой стрелки на 3 часа, угол отсчитывается против часовой стрелки (например, 90 градусов соответствуют 12 часам, 180 - 9 часам, и так далее).

void drawString ( String str , int x , int y ) - Этот метод выводит строку с использованием текущих шрифта и цвета. Точка с координатами (х,у) соответствует левой границе базовой линии символов, а не левому верхнему углу, как это принято в других методах рисования. Базовая линия (baseline) - линия, по которой выравниваются нижние границы символов.

• и т.д.

Работа с цветом

Класс java.awt.Color .

• Можно использовать константы класса (Color.BLUE, Color.RED) для задания какого-либо из общеупотребительных цветов (blue,red).

• Для создания нового цвета можно использовать один из описанных ниже конструкторов:
Color(int, int, int) - параметрами для этого конструктора являются три целых числа в диапазоне от 0 до 255 для красного, зеленого и голубого компонентов цвета.
Color(int) - у этого конструктора - один целочисленный аргумент, в котором в упакованном виде заданы красный, зеленый и голубой компоненты цвета. Красный занимает биты 16-23, зеленый - 8-15, голубой - 0-7.
Color(float, float, float) - последний из конструкторов цвета, принимает в качестве параметров три значения типа float (в диапазоне от 0.0 до 1.0) для красного, зеленого и голубого базовых цветов.

• Методы получения параметров цвета
getRed (), getGreen (), getBlue () - каждый из этих методов возвращает в младших восьми битах результата значение соответствующего базового компонента цвета.





Работа со шрифтами

• Класс java.awt.Font

– Константы

– Конструкторы
Font ( String name , int style , int size ) - создает новый шрифт с указанным именем, стилем и размером. Имена шрифтов: Dialog, Helvetica, TimesRoman, Courier и Symbol. Для указания стиля шрифта внутри данного семейства предусмотрены три статические переменные. - Font.PLAIN, Font.BOLD и Font.ITALIC, что соответствует обычному стилю, курсиву и полужирному.

– Методы модификации и получения параметров шрифта (getSize - метод возвращает целое число, представляющее собой размер шрифта, isBold, isItalic, isPlain - методы возвращают true в том случае, если стиль шрифта - полужирный (bold), курсив (italic) или обычный (plain), соответственно).

• Класс java . awt . FontMetrics

– Содержит методы определения геометрических характеристик шрифтов (getAscent, getDescent, getHeight - эти методы возвращают подъем, снижение и ширину шрифта. Сумма подъема и снижения дают полную высоту шрифта. Высота шрифта - это не просто расстояние от самой нижней точки букв g и у до самой верхней точки заглавной буквы Т и символов вроде скобок. Высота включает подчеркивания и т.п.).

Высота (height) - размер от верхней до нижней точки самого высокого символа в шрифте.

Базовая линия (baseline) - линия, по которой выравниваются нижние границы символов (не считая снижения (descent)).

Подъем (ascent) - расстояние от базовой линии до верхней точки символа.

Снижение (descent) - расстояние от базовой линии до нижней точки символа.

Abstract Window Toolkit (AWT)

Существуют два взгляда на проблему создания независимой от платформы библиотеки. Один подход заключается в том, что упор делается на графику низкого уровня - рисование пикселей, при этом разработчики библиотеки сами заботятся о внешнем виде каждого компонента. При другом подходе создаются абстракции, подходящие для библиотек каждой из операционных систем, и именно "родные" пакеты данной операционной системы служат подъемной силой для архитектурно-нейтральной библиотеки на каждой из платформ. В Java при создании библиотеки Abstraction Window Toolkit (AWT) выбран второй подход.

Особенности AWT :

• Компоненты являются компонентами ОС

– большое количество native-кода

– отображение изменяется при смене ОС

• Применение:

– в апплетах

– в оконных приложениях

• Абстрактный класс Component определяет базовую функциональность всех компонентов. Это класс, который инкапсулирует все атрибуты визуального интерфейса - обработка ввода с клавиатуры, управление фокусом, взаимодействие с мышью, уведомление о входе/выходе из окна, изменения размеров и положения окон, прорисовка своего собственного графического представления, сохранение текущего текстового шрифта, цветов фона и переднего плана (более 100 методов).


Иерархия классов

Рисунок 22.

Container

Container - это абстрактный подкласс класса Component, определяющий дополнительные методы, которые дают возможность помещать в него другие компоненты, что дает возможность построения иерархической системы визуальных объектов. Container отвечает за расположение содержащихся в нем компонентов с помощью интерфейса LayoutManager, описание которого будет позднее.

Panel

Класс Panel - это очень простая специализация класса Container. В отличие от последнего, он не является абстрактным классом. Поэтому о Panel можно думать, как о допускающем рекурсивную вложенность экранном компоненте. С помощью метода add в объекты Panel можно добавлять другие компоненты. После того, как в него добавлены какие-либо компоненты, можно вручную задавать их положение и изменять размер с помощью методов setLocation, setSize и setBounds класса Component.

Мы уже использовали один из подклассов Panel - Applet. Каждый раз, когда мы создавали Applet, методы paint и update рисовали его изображение на поверхности объекта Panel. Давайте познакомимся с основными компонентами AWT, которые можно вставлять в пустую Panel при создании графических приложений.

Canvas

• Семантически «пустой» компонент.

• Позволяет отрисовать на себе произвольный вид компонента.

Рисунок 23. Canvas

Пример 45.

/* <applet code = "CanvasDemo" height=300>

</applet> */

import java.awt.*;

import java.applet.*;

class GrayCanvas extends Canvas {

Color gray;

public GrayCanvas(float g) {

gray = new Color(g, g, g);

}

public void paint(Graphics g) {

Dimension size = getSize();

g.setColor(gray);

g.fillRect(0, 0, size.width, size.height);

g.setColor(Color.black);

g.drawRect(0, 0, size.width-1, size.height-1);

}

}

public class CanvasDemo extends Applet {

static final int n = 4;

public void init() {

setLayout(null);

int width = Integer.parseInt(getParameter("width"));

int height = Integer.parseInt(getParameter("height"));

for (int i = 0; i < n; i++) {

for (int j = 0; j < n; j++) {

   float g = (i * n + j) / (float) (n * n);

     Canvas c = new GrayCanvas(g);

        add(c);

     c.setSize(width / n, height / n);

     c.setLocation(i * width / n, j * height / n);

}

}

}

}

Label

• Отображает строку.

• Позволяет управлять параметрами текста, выравнивания.

Рисунок 24. Label

Пример 46.

/* <applet code = "LabelDemo" height=300> </applet> */

import java.awt.*;

import java.applet.*;

public class LabelDemo extends Applet {

public void init() {

setLayout(null);

int width = Integer.parseInt(getParameter("width"));

int height = Integer.parseInt(getParameter("height"));

Label left = new Label("Left", Label.LEFT);

Label right = new Label("Right", Label.RIGHT);

Label center = new Label("Center", Label.CENTER);

add(left);

add(right);

 add(center);

left.setBounds(0, 0, width, height / 3);

right.setBounds(0, height / 3, width, height / 3);

center.setBounds(0, 2 * height / 3, width, height / 3);

}

}

Button

• Реализует кнопку.

• Создает события.

Рисунок 25. Button

Пример 47.

/* <applet code = "ButtonDemo" height=300> </applet> */

import java.awt.*;

import java.applet.*;

public class ButtonDemo extends Applet {

public void init() {

setLayout(null);

int width = Integer.parseInt(getParameter("width"));

int height = Integer.parseInt(getParameter("height"));

Button yes = new Button("Yes");

Button no = new Button("No");

Button maybe = new Button("Undecided");

add(yes);

add(no);

add(maybe);

yes.setBounds(0, 0, width, height / 3);

no.setBounds(0, height / 3, width, height / 3);

maybe.setBounds(0, 2 * height / 3, width, height / 3);

}

}

Checkbox

• Реализует «флажок»

• Имеет методы установки значения

• Создает события

Рисунок 26. Checkbox

Пример 48.

/* <applet code = "CheckboxDemo" height=300> </applet> */

import java.awt.*;

import java.applet.*;

public class CheckboxDemo extends Applet {

public void init() {

setLayout(null);

int width = Integer.parseInt(getParameter("width"));

int height = Integer.parseInt(getParameter("height"));

Checkbox win95 = new Checkbox("Windows 95/98", null, true);

Checkbox solaris = new Checkbox("Solaris 2.5");

Checkbox mac = new Checkbox("MacOS 7.5");

add(win95);

add(solaris);

add(mac);

win95.setBounds(0, 0, width, height / 3);

solaris.setBounds(0, height / 3, width, height / 3);

mac.setBounds(0, 2 * height / 3, width, height / 3);

}

}

CheckboxGroup

• Реализует выбор одного из вариантов

• Имеет методы установки значения

• Создает события

Рисунок 27. CheckboxGroup

Пример 49.

/* <applet code = "CheckboxGroupDemo" height=300> </applet> */

import java.awt.*;

import java.applet.*;

public class CheckboxGroupDemo extends Applet {

public void init() {

setLayout(null);

int width = Integer.parseInt(getParameter("width"));

int height = Integer.parseInt(getParameter("height"));

CheckboxGroup g = new CheckboxGroup();

Checkbox win95 = new Checkbox("Windows 95/98", g, true);

Checkbox solaris = new Checkbox("Solaris 2.5", g, false);

Checkbox mac = new Checkbox("MacOS 7.5", g, false);

add(win95);

add(solaris);

add(mac);

win95.setBounds(0, 0, width, height / 3);

solaris.setBounds(0, height / 3, width, height / 3);

mac.setBounds(0, 2 * height / 3, width, height / 3);

}

}

Choice

• Реализует выпадающий список

• Имеет методы управления состоянием

• Создает события

Рисунок 28. Choice

Пример 50.

/* <applet code = "ChoiceDemo" height=300> </applet> */

import java.awt.*;

import java.applet.*;

public class ChoiceDemo extends Applet {

public void init() {

setLayout(null);

int width = Integer.parseInt(getParameter("width"));

int height = Integer.parseInt(getParameter("height"));

Choice os = new Choice(); Choice browser = new Choice();

os.addItem("Windows 95/98");

os.addItem("Solaris 2.5"); os.addItem("MacOS 7.5");

browser.addItem("Netscape Navigator 3.0");
browser.addItem("Netscape Communicator 4.5");

browser.addItem("Internet Explorer 3.0");

browser.addItem("Mosaic 3.0"); browser.addItem("Lynx 2.4");

browser.select("Netscape Communicator 4.5");

add(os); add(browser);

os.setBounds(0, 0, width, height / 2);

browser.setBounds(0, height / 2, width, height / 2);

}

}


List

• Реализует список c возможностью выбора нескольких вариантов и прокруткой.

• Имеет методы управления состоянием.

• Создает события.

Рисунок 29. List

Пример 51.

/* <applet code = "ListDemo" height=100> </applet> */

import java.awt.*;

import java.applet.*;

public class ListDemo extends Applet {

public void init() {

setLayout(null);

int width = Integer.parseInt(getParameter("width"));

int height = Integer.parseInt(getParameter("height"));

List os = new List(0, true); List browser = new List(0, false);

os.add("Windows 95/98");

os.add("Solaris 2.5"); os.add("MacOS 7.5");

browser.add("Netscape Navigator 3.0");

browser.add("Netscape Communicator 4.5");

browser.add("lnternet Explorer 4.0");

browser.add("Mosaic 3.0"); browser.add("Lynx 2.4");

browser.select(1);

add(os); add(browser);

os.setBounds(0, 0, width, height / 2);

browser.setBounds(0, height / 2, width, height / 2);

}

}

Scrollbar

• Реализует полосу прокрутки.

• Может иметь два положения.

• Имеет методы управления состоянием.

• Создает события.

Рисунок 30. Scrollbar

Пример 52.

/* <applet code = "ScrollbarDemo" height=100> </applet> */

import java.awt.*;

import java.applet.*;

public class ScrollbarDemo extends Applet {

public void init() {

setLayout(null);

int width = Integer.parseInt(getParameter("width"));

int height = Integer. parseInt(getParameter("height"));

Scrollbar hs = new Scrollbar(Scrollbar.HORIZONTAL, 50, width / 10, 0, 100);

Scrollbar vs = new Scrollbar(Scrollbar.VERTICAL, 50, height / 2, 0, 100);

add(hs);

add(vs);

int thickness = 16;

hs.setBounds(0, height - thickness, width - thickness, thickness);

vs.setBounds(width - thickness, 0, thickness, height - thickness);

}

}

TextField

• Реализует однострочную область для ввода текста.

• Имеет методы управления состоянием.

• Создает события.

Рисунок 31. TextField

Пример 53.

/* <applet code = "TextFieldDemo" height=100> </applet> */

import java.awt.*;

import java.applet.*;

public class TextFieldDemo extends Applet {

public void init() {

setLayout(null);

  int width = Integer.parseInt(getParameter("width"));

int height = Integer.parseInt(getParameter("height"));

Label namep = new Label("Name : ", Label.RIGHT);

Label passp = new Label("Password : ", Label.RIGHT);

TextField name = new TextField(8);
TextField pass = new TextField(8);

pass.setEchoChar('*');

add(namep); add(name); add(passp); add(pass);

int space = 25; int w1 = width / 3;

namep.setBounds(0, (height - space) / 2, w1, space);

name.setBounds(w1, (height - space) / 2, w1, space);

passp.setBounds(0, (height + space) / 2, w1, space);

pass.setBounds(w1, (height + space) / 2, w1, space);

}

}


TextArea

• Реализует простой многострочный редактор.

• Имеет методы управления состоянием и изменения текста.

• Создает события.

Рисунок 32. TextArea

Пример 54.

/* <applet code = "TextAreaDemo" height=200> </applet> */

import java.awt.*;

import java.applet.*;

public class TextAreaDemo extends Applet {

public void init() {

setLayout(null);

int width = Integer.parseInt(getParameter("width"));

int height = Integer.parseInt(getParameter("height"));

String val = "Я пришел к тебе с приветом,\n" +

"Рассказать, что Солнце встало,\n" +

"Что оно зеленым цветом\n" +

"По листам затрепетало\n";

TextArea text = new TextArea(val, 80, 25);

add(text);

text.setBounds(0, 0, width, height);

}

}

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

• Управляют размещением компонентов в контейнере, учитывая параметры этих компонентов (например, предпочтительный размер).

• Реализуют интерфейс java . awt . LayoutManager .

• Устанавливаются с помощью метода setLayout () контейнера.

• Примеры простых компоновок:

Простая поточная компоновка FlowLayout. Класс FlowLayout реализует простой стиль размещения, при котором компоненты располагаются, начиная с левого верхнего угла, слева направо и сверху вниз. Если в данную строку не помещается очередной компонент, он располагается в левой позиции новой строки. Справа, слева, сверху и снизу компоненты отделяются друг от друга небольшими промежутками. Ширину этого промежутка можно задать в конструкторе FlowLayout. Каждая строка с компонентами выравнивается по левому или правому краю, либо центрируется в зависимости от того, какая из констант LEFT, RIGHT или CENTER была передана конструктору. Режим выравнивания по умолчанию - CENTER, используемая по умолчанию ширина промежутка - 5 пикселей.

Граничная компоновка BorderLayout. Класс BorderLayout реализует стиль размещения, в котором предусмотрено четыре узких компонента фиксированной ширины по краям, и одна большая область в центре, которая может расширяться и сужаться в двух направлениях, занимая все свободное пространство окна. У каждой из этих областей есть строки-имена: String.North, String.South, String.East и String.West соответствуют четырем краям, a Center - центральной области.

Компоновка в сетку GridLayout. Класс GridLayout размещает компоненты в простой равномерной сетке. Конструктор этого класса позволяет задавать количество строк и столбцов.

Компоновка «Колода карт» CardLayout. Класс CardLayout по своему уникален. Он отличается от других программ управления размещением компонентов тем, что представляет несколько различных вариантов размещения, которые можно сравнить с колодой карт. Колоду можно тасовать так, чтобы в данный момент времени наверху была только одна из карт. Это может быть полезно при создании интерфейсов пользователя, в которых есть необязательные компоненты, включаемые и выключаемые динамически в зависимости от реакции пользователя.

Сетка с настраиваемыми размерами GridBagLayout .

Дата: 2019-02-19, просмотров: 233.