• Методы поиска минимума и максимума
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, просмотров: 266.