Microsoft Visual J++. Создание приложений и аплетов на языке Java. Часть 1© Александр Фролов, Григорий ФроловТом 30, М.: Диалог-МИФИ, 1997, 288 стр. Приложение TextLabelВ окне приложения TextLabel, демонстрирующего способы работы с полями класса Label, мы разместили одно такое поле и три кнопки, позволяющие изменять выравнивание текста в поле (рис. 5.11).
Рис. 5.11. Окно приложения TextLabel Нажимая кнопки, вы можете заметить, как строка, расположенная под ними, немного сдвигается по горизонтали. Исходные тексты приложенияИсходный текст приложения TextLabel приведен в листинге 5.9. Листинг 5.9. Файл TextLabel\TextLabel.java
// =========================================================
// Работа с компонентами Label
//
// (C) Фролов А.В, 1997
//
// E-mail: frolov@glas.apc.org
// WWW: http://www.glasnet.ru/~frolov
// или
// http://www.dials.ccas.ru/frolov
// =========================================================
import java.applet.*;
import java.awt.*;
public class TextLabel extends Applet
{
// Создаем ссылку на объекты типа Label
Label lbTextLabel;
// Создаем три ссылки на объекты типа Button
Button btnLeft;
Button btnCenter;
Button btnRight;
// -------------------------------------------------------
// getAppletInfo
// Метод, возвращающей строку информации об аплете
// -------------------------------------------------------
public String getAppletInfo()
{
return "Name: TextLabel\r\n" +
"Author: Alexandr Frolov\r\n" +
"E-mail: frolov@glas.apc.org" +
"WWW: http://www.glasnet.ru/~frolov" +
"Created with Microsoft Visual J++ Version 1.0";
}
// -------------------------------------------------------
// init
// Метод, получающий управление при инициализации аплета
// -------------------------------------------------------
public void init()
{
// Создаем компоненту Label
lbTextLabel = new Label("Выберите выравнивание");
// Создаем три кнопки
btnLeft = new Button("Влево");
btnCenter = new Button("Центровка");
btnRight = new Button("Вправо");
// Добавляем три кнопки
add(btnLeft);
add(btnCenter);
add(btnRight);
// Добавляем компоненту Label
add(lbTextLabel);
// Устанавливаем цвет фона
setBackground(Color.yellow);
}
// -------------------------------------------------------
// action
// Метод вызывается, когда пользователь выполняет
// действие над компонентами
// -------------------------------------------------------
public boolean action(Event evt, Object obj)
{
// Ссылка на кнопку, от которой пришло сообщение
Button btn;
// Проверяем, что событие вызвано кнопкой, а не
// другим компонентом
if(evt.target instanceof Button)
{
// Получам ссылку на кнопку, вызвавшую событие
btn = (Button)evt.target;
// Выполняем ветвление по кнопкам
if(evt.target.equals(btnLeft))
{
// Выравниваем текст компоненты Label
// по левой границе
lbTextLabel.setAlignment(Label.LEFT);
}
else if(evt.target.equals(btnCenter))
{
// Центруем текст компоненты Label
lbTextLabel.setAlignment(Label.CENTER);
}
else if(evt.target.equals(btnRight))
{
// Выравниваем текст компоненты Label
// по правой границе
lbTextLabel.setAlignment(Label.RIGHT);
}
// Если событие возникло от неизвестной кнопки,
// мы его не обрабатываем
else
{
return false;
}
// Возвращаем признак того, что мы обработали событие
return true;
}
// Если событие вызвано не кнопкой,
// мы его не обрабатываем
return false;
}
// -------------------------------------------------------
// paint
// Метод paint, выполняющий рисование в окне аплета
// -------------------------------------------------------
public void paint(Graphics g)
{
// Определяем текущие размеры окна аплета
Dimension dimAppWndDimension = size();
// Выбираем в контекст отображения черный цвет
g.setColor(Color.black);
// Рисуем рамку вокруг окна аплета
g.drawRect(0, 0,
dimAppWndDimension.width - 1,
dimAppWndDimension.height - 1);
}
}
Исходный текст документа HTML, созданного для размещения аплета, представлен в листинге 5.10. Листинг 5.10. Файл TextLabel\TextLabel.html
<html>
<head>
<title>TextLabel</title>
</head>
<body>
<hr>
<applet
code=TextLabel.class
id=TextLabel
width=320
height=240 >
</applet>
<hr>
<a href="TextLabel.java">The source.</a>
</body>
</html>
Описание исходного текстаВ классе TextLabel мы определили четыре поля и несколько методов. Поля класса TextLabelМы определили четыре поля - lbTextLabel, btnLeft, btnCenter и btnRight: Label lbTextLabel; Button btnLeft; Button btnCenter; Button btnRight; Первое из них предназначено для хранения ссылки на объект класса Label (однострочное текстовое поле), остальные три - для хранения ссылок на кнопки, определяющие выравнивание. Метод getAppletInfoМетод getAppletInfo возвращает информацию о нашем аплете. Метод initМетод init создает одно текстовое поле, вызывая конструктор с одним параметром - текстовой строкой:
lbTextLabel = new Label("Выберите выравнивание");
Далее этот метод создает три кнопки, с помощью которых вы будете изменять выравнивание текста в поле класса Label:
btnLeft = new Button("Влево");
btnCenter = new Button("Центровка");
btnRight = new Button("Вправо");
Затем созданные кнопки и поле добавляются в окно аплета при помощи метода add: add(btnLeft); add(btnCenter); add(btnRight); add(lbTextLabel); Последнее, что делает метод init перед возвращением управления, это изменение цвета фона: setBackground(Color.yellow); Метод actionНаш метод action обрабатывает только те события, которые вызваны кнопками. Проверка источника события выполняется так же, как и раньше, поэтому мы не будем на этом останавливаться. Что же касается установки выравнивания, то она выполняется при помощи метода setAlignment: if(evt.target.equals(btnLeft)) lbTextLabel.setAlignment(Label.LEFT); else if(evt.target.equals(btnCenter)) lbTextLabel.setAlignment(Label.CENTER); else if(evt.target.equals(btnRight)) lbTextLabel.setAlignment(Label.RIGHT); else return false; Метод paintЕдинственное, что делает метод paint, - это рисование рамки черного цвета вокруг окна аплета. |


