Microsoft Visual J++. Создание приложений и аплетов на языке Java. Часть 1© Александр Фролов, Григорий ФроловТом 30, М.: Диалог-МИФИ, 1997, 288 стр. Приложение TxtFieldВ приложении TxtField мы создали однострочное поле редактирования на базе класса TextField и кнопку, с помощью которой можно извлечь текст из поля для отображения (рис. 5.12). Рис. 5.12. Окно аплета TxtField Изменив текст в поле редактирования, нажмите кнопку “Получить строку”. В нижней части окна аплета вы увидите измененный вами текст. Исходные тексты приложенияИсходные тексты приложения TxtField представлены в листинге 5.11. Листинг 5.11. Файл TxtField\TxtField.java // ========================================================= // Однострочное текстовое поле класса TextField // // (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 TxtField extends Applet { // Создаем ссылку на объекты типа TextField TextField txt; // Создаем ссылку на объекты типа Button Button btnGetText; // Строка для хранения введенных данных String str; // ------------------------------------------------------- // getAppletInfo // Метод, возвращающей строку информации об аплете // ------------------------------------------------------- public String getAppletInfo() { return "Name: TxtField\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() { // Создаем редактируемое однострочное текстовое поле txt = new TextField("Введите строку текста", 35); // Создаем кнопку, с помощью которой можно получить // содержимое текстового поля btnGetText = new Button("Получить строку"); // Добавляем текстовое поле в окно аплете add(txt); // Добавляем кнопку в окно аплете add(btnGetText); // Получаем и сохраняем текущий текст, // установленный в поле str = txt.getText(); // Устанавливаем цвет фона 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(btnGetText)) { // Получаем и сохраняем текущий текст, // установленный в поле str = txt.getText(); // Перерисовываем окно аплета repaint(); } // Если событие возникло от неизвестной кнопки, // мы его не обрабатываем 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); // Рисуем строку, полученную из текстового поля g.drawString("> " + str, 10, 100); } } Документ HTML, созданный для нашего аплета, представлен в листинге 5.12. Листинг 5.12. Файл TxtField\TxtField.html <html> <head> <title>TxtField</title> </head> <body> <hr> <applet code=TxtField.class id=TxtField width=320 height=240 > </applet> <hr> <a href="TxtField.java">The source.</a> </body> </html> Описание исходного текстаВ классе TxtField мы определили три поля и несколько методов. Поля класса TxtFieldВ поле txt хранится ссылка на объект класса TextField - наше однострочное поле редактирования: TextField txt; В полях btnGetText и str хрянятся, соответственно, ссылки на кнопку и текстовую строку, в которую записывается текущее содержимое поля редактирования: Button btnGetText; String str; Метод getAppletInfoМетод getAppletInfo возвращает информацию о нашем аплете. Метод initМетод init создает одно текстовое поле редактирования, вызывая конструктор с параметром в виде текстовой строки: txt = new TextField("Введите строку текста", 35); Далее этот метод создает кнопку, с помощью которой можно получить текущее содержимое поля редактирования: btnGetText = new Button("Получить строку"); Затем созданные поле и кнопка добавляются в окно аплета при помощи метода add: add(txt); add(btnGetText); После этого метод init получает текущее содержимое поля редактирования и записывает его в строку str: str = txt.getText(); В завершении метод init изменяет цвет фона: setBackground(Color.yellow); Метод actionНаш метод action обрабатывает только те события, которые вызваны кнопкой. Обработка заключается в извлечении текста из поля редактирования и записи его в строку str: str = txt.getText(); repaint(); Метод paintПосле рисования рамки черного цвета вокруг окна аплета метод paint отобаржает текущее содержимое строки str в нижней части окна: g.drawString("> " + str, 10, 100); |