Назад
Вперед
10.4. Обращение к полю другого аплета
Пример демонстрирует использование интерфейса
AppletContext и метода getApplet. Аплет получает и
отображает значение, записанное в поле другого
аплета, расположенного на той же странице HTML.
Исходный текст первого аплета,
получающего содержимое поля
Исходный текст второго аплета,
содержимое поля которого определяется первым
аплетом
Архив проекта для Java WorkShop 2.0
Демонстрация
(ваш браузер должен уметь работать с аплетами
Java JDK 1.1)
Немного теории
Получив тем или иным способом ссылку на другой
аплет, расположенный в том же документе HTML, наш
аплет может получать значения полей другого
аплета.
Для того чтобы аплет мог получить значения
полей из других аплетов, эти поля должны быть
определены как public.
Описание примера
Пример состоит из двух аплетов, расположенных в
одном документе HTML (рис. 1).
Рис. 1. В одном документе HTML мы расположили два
аплета
Первый аплет создает в своем окне однострочное
поле редактирования, где вы можете вводить любые
текстовые строки.
Второй аплет содержит такой же однострочный
редактор и кнопку Get text. Если нажать на эту кнопку,
второй аплет получит текст из редактора первого
аплета и скопирует его в свой редактор.
Исходный текст первого аплета TextEdit
Исходный текст первого аплета предельно прост.
В его главном классе мы определили поле txtf
класса TextField:
import java.applet.*;
import java.awt.*;
public class TextEdit extends Applet
{
public TextField txtf;
. . .
}
Обратите внимание, что поле txtf определено как
public. Это необходимо для того чтобы другой аплет
смог получить содержимое поля.
Метод init класса TextEdit
Метод init класса TextEdit просто создает текстовое
поле и добавляет его в окно аплета:
public void init()
{
txtf = new TextField("Enter text", 35);
add(txtf);
setBackground(Color.yellow);
}
Дополнительно метод init изменяет фон окна на
желтый.
Метод getAppletInfo класса TextEdit
Метод getAppletInfo возвращает строку описания
аплета TextEdit:
public String getAppletInfo()
{
return "Name: TextEdit";
}
Исходный текст второго аплета GetValue
В исходный текст второго аплета GetValue мы
импортировали описание класса первого аплета
TextEdit, что необходимо для обращения к
определенному там полю txtf:
import java.awt.*;
import java.applet.*;
import java.util.*;
import java.awt.event.*;
import TextEdit;
public class GetValue extends Applet
implements ActionListener
{
TextField txtf;
Button btnGetText;
TextEdit appletTextEdit;
. . .
}
Кроме того, в главном классе мы определили свое
поле txtf, поле btnGetText для хранения ссылки на кнопку
Get text и поле appletTextEdit для хранения ссылки на аплет
TextEdit.
Метод init класса GetValue
При инициализации аплета GetValue его метод init
создает однострочный редактор txtf класса TextField и
добавляет его в окне аплета:
txtf = new TextField("", 35);
add(txtf);
В окне этого редактора будет отображаться
строка, извлеченная из поля txtf аплета TextEdit.
Далее метод init создает кнопку, добавляет ее в
окно аплета и подключает обработчик событий:
btnGetText = new Button("Get text");
add(btnGetText);
btnGetText.addActionListener(this);
Ссылка на аплет TextEdit получается методом init при
помощи метода getApplet, который мы уже использовали
в этом разделе библиотеки примеров:
AppletContext ac;
ac = getAppletContext();
appletTextEdit =
(TextEdit)ac.getApplet("TextEdit");
В заключение метод init устанавливает желтый
цвет фона окна аплета GetValue:
setBackground(Color.yellow);
Метод actionPerformed класса GetValue
Если ссылка на аплет TextEdit получена успешно,
метод actionPerformed при нажатии на кнопку Get text
извлекает текст из редактора аплета TextEdit и
сохраняет ее в строке s класса String:
if(appletTextEdit != null)
{
if(e.getSource().equals(btnGetText))
{
String s =
appletTextEdit.txtf.getText();
. . .
}
}
Далее метод actionPerformed записывает полученный
текст в "свое" поле txtf, определенное в аплете
GetValue:
txtf.setText(s);
Метод getAppletInfo класса GetValue
Метод getAppletInfo возвращает текстовое описание
аплета GetValue:
public String getAppletInfo()
{
return "Name: GetValue";
}
Назад Вперед |