Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TarasovVLJavaAndEclipse_15_ControlElements.doc
Скачиваний:
15
Добавлен:
08.04.2015
Размер:
849.41 Кб
Скачать

Программа 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. Многострочный текст

    1. Понятие менеджера компоновки

Все компоненты, которые мы показывали до сих пор, были размещены (позиционированы) в контейнере менеджером компоновки, заданным по умолчанию. Как мы упомянули в начале этой главы, менеджер компоновки автоматически размещает элементы управления в пределах окна, используя некоторый тип алгоритма. Если вы программировали для других GUI-сред, таких какWindows, то привыкли к размещению элементов управления вручную. Хотя элементы управленияJavaтоже можно размещать вручную, в этом нет необходимости по двум причинам. Во-первых, очень утомительно вручную размещать большое количество компонентов. Во-вторых, иногда, в тот момент, когда нужно размещать некоторый элемент, информация о его размерах оказывается недоступной (чаще всего потому, что необходимые для получения этой информации компоненты комплекта инструментов еще не были реализованы). Правильное же размещение компонента без определенных размеров относительно других компонентов весьма проблематично. Поэтому разработаны специальные программные компоненты (менеджеры компоновки) для автоматического управления компоновкой.

Каждый объект типа Container имеет связанный с ним менеджер компоновки.Менеджер компоновки — это экземпляр некоторого класса, который реализует интерфейсLayoutManager. Менеджер компоновки устанавливается методомsetLayout(). Если вызовsetLayout()не сделан, то используется менеджер компоновки по умолчанию (поточный). Менеджер компоновки применяется всякий раз, когда контейнер изменяется в размерах (или устанавливается впервые — с первоначальными размерами), чтобы позиционировать каждый из его внутренних компонентов.

Метод SetLayout()имеет следующую общую форму:

void setLayout (LayoutManager layoutObj)

Здесь layoutObj — ссылка на необходимый менеджер компоновки. Если вы хотите отключить менеджер компоновки и позиционировать компоненты вручную, передавайте в качестве параметраlayoutObj значениеnull (пустой указатель). Если вы это сделаете, то будете вынуждены определять форму и позицию каждого компонента вручную, указывая методsetBounds(), определенный вComponent. Но, как правило, следует использовать менеджер компоновки.

Каждый менеджер компоновки хранит и отслеживает список имен компонентов. Всякий раз, когда вы добавляете компонент в контейнер, менеджер компоновки получает соответствующее уведомление. Если нужно изменять размеры контейнера, менеджер компоновки консультируется со своими vетодами minimumLayoutSize() и preferredLayoutSize(). Каждыйкомпонент, который управляется менеджером компоновки, содержит методыgetPreferredSize()и getMinimumSize().Они возвращают предпочтительный и минимальный размер, требуемый для отображения каждого компонента. Если это вообще возможно, менеджер компоновки будет удовлетворять эти запросы (для поддержки целостности политики компоновки). Для элементов управления своего подкласса можно переопределить указанные методы. Иначе используются значения по умолчанию.

Java имеет несколько предопределенных классов LayoutManager, которые описываются ниже. Используйте тот менеджер компоновки, который наилучшим образом подходит вашему приложению.