Основы программирования на Java - страница 30

Шрифт
Интервал

стр.

>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 Text Field(8);

>TextField pass = new TextField(8);

>pass.setEchoChar('*');

>add(namep);

>add(name);

>add(passp);

>add(pass);

>int space = 25;

>int wl = width / 3;

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

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

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

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

>}

>}

12.12. Класс TextArea

Порой одной строки текста оказывается недостаточно для конкретной задачи. AWT включает в себя очень простой многострочный редактор обычного текста, называемый TextArea. Конструктор класса TextArea воспринимает значение типа String в качестве начального текста объекта. Кроме того, в конструкторе указывается число колонок и строк текста, которые нужно выводить. Есть три метода, которые позволяют программе модифицировать содержимое объекта TextArea: appendText добавляет параметр типа String в конец буфера; insertText вставляет строку в заданное отсчитываемым от нуля индексом место в буфере; replaceText копирует строку-параметр в буфер, замещая ею текст, хранящийся в буфере между первым и вторым параметрами-смещениями. Ниже приведена программа, создающая объект TextArea и вставляющая в него строку.

>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" + "свою лень.\n\n";

>TextArea text = new TextArea(val, 80,40); add(text);

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

>}

>}

12.13.  Стратегии размещения компонентов

Все компоненты, с которыми мы работали до сих пор в этой главе, размещались «вручную». И в каждом примере мы вызывали загадочный метод setLayout(null). Этот вызов запрещал использование предусмотренного по умолчанию механизма управления размещением компонентов. Для решения подобных задач в AWT предусмотрены диспетчеры размещения (layout managers).


12.13.1. Диспетчер размещения LayoutManager

Каждый класс, реализующий интерфейс LayoutManager, следит за списком компонентов, которые хранятся с именами типа String. Всякий раз, когда вы добавляете компонент в Panel, диспетчер размещения уведомляется об этом. Если требуется изменить размер объекта Panel, то идет обращение к диспетчеру посредством методов minimumLayoutSize и preferredLayoutSize. В каждом компоненте, который приходится обрабатывать диспетчеру, должны присутствовать реализации методов preferredSize и minimumSize. Эти методы должны возвращать предпочтительный и минимальный размеры для прорисовки компонента, соответственно. Диспетчер размещения по возможности будет пытаться удовлетворить эти запросы, в то же время заботясь о целостности всей картины взаимного расположения компонентов.

В Java есть несколько предопределенных классов — диспетчеров размещения, описываемых ниже.

12.13.2. Стратегия FIowLayout

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


стр.

Похожие книги