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, - это рисование рамки черного цвета вокруг окна аплета. |