Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых
[Назад]

Библиотека примеров приложений Java

Оглавление
Список аплетов

Вызов метода из другого аплета
Параметры другого аплета
Поле другого аплета
Кнопки с зависимой фиксацией

Назад Вперед

10.4. Обращение к полю другого аплета

Пример демонстрирует использование интерфейса AppletContext и метода getApplet. Аплет получает и отображает значение, записанное в поле другого аплета, расположенного на той же странице HTML.

Исходный текст первого аплета, получающего содержимое поля

Исходный текст второго аплета, содержимое поля которого определяется первым аплетом

Архив проекта для Java WorkShop 2.0

Демонстрация
(ваш браузер должен уметь работать с аплетами Java JDK 1.1)

Немного теории

Получив тем или иным способом ссылку на другой аплет, расположенный в том же документе HTML, наш аплет может получать значения полей другого аплета.

Для того чтобы аплет мог получить значения полей из других аплетов, эти поля должны быть определены как public.

Описание примера

Пример состоит из двух аплетов, расположенных в одном документе HTML (рис. 1).

pic1.gif (2219 bytes)

Рис. 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";
}

Назад Вперед

[Назад]