- •Использование элементов управления, менеджеров компоновки и меню awt
- •Элементы управления. Основные понятия
- •Добавление и удаление элементов управления
- •Реагирование на элементы управления
- •Текстовые метки
- •Программа 114. Метки
- •Использование кнопок
- •Обработка кнопок
- •Программа 115. Кнопки
- •Программа 116. Распознавание нажатых кнопок
- •Применение флажков
- •Обработка флажков
- •Программа 117. Флажки
- •Класс CheckboxGroup
- •Программа 118. Радиокнопки
- •Элемент управления Choice
- •Обработка списков типа Choice
- •Программа 119. Списки Choice
- •Использование списков
- •Обработка списков
- •Программа 120. Списки List
- •Управление полосами прокрутки
- •Обработка полос прокрутки
- •Программа 121. Полосы прокрутки
- •Использование класса TextField
- •Обработка TextField
- •Программа 122. Текстовые поля
- •Использование TextArea
- •Программа 123. Текстовые области
- •Понятие менеджера компоновки
- •Менеджер FlowLayout
- •Программа 124. Размещение компонент с левым выравниванием
- •Класс BorderLayout
- •Программа 125. Размещение компонент по границам и в центре
- •Использование вставок
- •Программа 126. Использование вставок для выравнивания компонент
- •Менеджер GridLayout
- •Программа 127. Табличное размещение компонентов
- •Класс CardLayout
- •Программа 128. Карточная компоновка
- •Панели меню и меню
- •Программа 129. Создание меню
- •Диалоговые окна
- •Программа 130. Окна диалога
- •Класс FileDialog
- •Программа 131. Диалог выбора файла
- •Задача 17. Элементы управления
Программа 123. Текстовые области
// Файл TextAreaDemo.java
import java.awt.*;
import java.applet.*;
/*
<applet code = "TextAreaDemo" width = 300 height = 250>
</applet>
*/
public class TextAreaDemo extends Applet {
public void init(){
String val = "There are two ways of constructing "
+ "a software design.\n"
+ "One way is to make it so simple\n"
+ "that there are obviously no deficiencies.\n"
+ "And the other way is to make it so complicated\n"
+ "that there are no obvious deficiencies.\n\n"
+ " - C.A.R. Hoare\n\n"
+ "There's an old story about the person who wished\n"
+ "his computer were as easy to use as his telephone \n"
+ "That wish has come true,\n"
+ "since I no longer know how to use my telephone.\n\n"
+ " - Bjarne Stroustrup, AT&T, (inventor of С++)";
TextArea text = new TextArea(val, 10, 30);
add(text);
}
}
Пример вывода апплета TextAreaDemo представлен на рис.9.
Рис. 9. Многострочный текст
Понятие менеджера компоновки
Все компоненты, которые мы показывали до сих пор, были размещены (позиционированы) в контейнере менеджером компоновки, заданным по умолчанию. Как мы упомянули в начале этой главы, менеджер компоновки автоматически размещает элементы управления в пределах окна, используя некоторый тип алгоритма. Если вы программировали для других GUI-сред, таких какWindows, то привыкли к размещению элементов управления вручную. Хотя элементы управленияJavaтоже можно размещать вручную, в этом нет необходимости по двум причинам. Во-первых, очень утомительно вручную размещать большое количество компонентов. Во-вторых, иногда, в тот момент, когда нужно размещать некоторый элемент, информация о его размерах оказывается недоступной (чаще всего потому, что необходимые для получения этой информации компоненты комплекта инструментов еще не были реализованы). Правильное же размещение компонента без определенных размеров относительно других компонентов весьма проблематично. Поэтому разработаны специальные программные компоненты (менеджеры компоновки) для автоматического управления компоновкой.
Каждый объект типа Container имеет связанный с ним менеджер компоновки.Менеджер компоновки — это экземпляр некоторого класса, который реализует интерфейсLayoutManager. Менеджер компоновки устанавливается методомsetLayout(). Если вызовsetLayout()не сделан, то используется менеджер компоновки по умолчанию (поточный). Менеджер компоновки применяется всякий раз, когда контейнер изменяется в размерах (или устанавливается впервые — с первоначальными размерами), чтобы позиционировать каждый из его внутренних компонентов.
Метод SetLayout()имеет следующую общую форму:
void setLayout (LayoutManager layoutObj)
Здесь layoutObj — ссылка на необходимый менеджер компоновки. Если вы хотите отключить менеджер компоновки и позиционировать компоненты вручную, передавайте в качестве параметраlayoutObj значениеnull (пустой указатель). Если вы это сделаете, то будете вынуждены определять форму и позицию каждого компонента вручную, указывая методsetBounds(), определенный вComponent. Но, как правило, следует использовать менеджер компоновки.
Каждый менеджер компоновки хранит и отслеживает список имен компонентов. Всякий раз, когда вы добавляете компонент в контейнер, менеджер компоновки получает соответствующее уведомление. Если нужно изменять размеры контейнера, менеджер компоновки консультируется со своими vетодами minimumLayoutSize() и preferredLayoutSize(). Каждыйкомпонент, который управляется менеджером компоновки, содержит методыgetPreferredSize()и getMinimumSize().Они возвращают предпочтительный и минимальный размер, требуемый для отображения каждого компонента. Если это вообще возможно, менеджер компоновки будет удовлетворять эти запросы (для поддержки целостности политики компоновки). Для элементов управления своего подкласса можно переопределить указанные методы. Иначе используются значения по умолчанию.
Java имеет несколько предопределенных классов LayoutManager, которые описываются ниже. Используйте тот менеджер компоновки, который наилучшим образом подходит вашему приложению.