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

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

Оглавление
Консольное приложение

Простейший аплет
Аплет с параметрами
Комбинированное приложение
Консольное с окном Frame
Аплет с окном Frame
Комбинированное с окном Frame
Библиотека классов
Аплет с обработкой событий
Консольное с обработкой событий

Назад Вперед

2.3. Аплет с параметрами

Пример демонстрирует способ передачи параметров аплету Java из документа HTML. В своем окне аплет отображает значения полученных параметров.

Исходный текст примера

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

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

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

Для передачи параметров аплету необходимо использовать оператор <PARAM>, расположив его в документе HTML сразу после оператора <APPLET>. Ниже мы показали фрагмент такого документа (реальные параметры аплета мы заменили квадратными скобками):

<applet
  name=[] code=[] codebase=[]
  width=[] height=[] align=[] alt=[]
>
<param name="Имя" value="Значение">
<param name="Имя" value="Значение">
  . . .
<param name="Имя" value="Значение">
</applet>

Параметры name и value задают, соответственно, имя параметра и его значение.

Для получения значения параметра используется метод getParameter. Вызов этого метода обычно располагается внутри метода init, получающего управление на этапе инициализации аплета.

В качестве аргумента методу getParameter передается имя параметра аплета. Если указанный параметр определен в документе HTML, метод возвращает его значение в виде объекта класса String, если нет - возвращается значение null.

Для того чтобы другие аплеты могли получить информацию о параметрах вашего аплета, переопределите в нем метод getParameterInfo. Этот метод должен возвращать массив объектов класса String следующего вида:

String[][] paramInfo = 
{
 {
   "Имя", "Класс", "Значение по умолчанию"
 },
  . . .
 {
   "Имя", "Класс", "Значение по умолчанию"
 }
};

Здесь "Имя" - имя параметра, "Класс" - его тип (например, String), а "Значение по умолчанию" - это то значение, которое должно присваиваться параметру аплета, не определенному в документе HTML.

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

В нашем аплете мы переопределили методы init, getAppletInfo, getParameterInfo и paint, а также предусмотрели поля для хранения значений параметров аплета:

String parmTextString = "Param string";
String parmTextFont = "Helvetica";
String parmFontSize = "24";
int    nFontSize = 24;

В поле parmTextString хранится значение параметра TextString, в поле parmTextFont - значение параметра TextFont, а в поле parmFontSize - значение параметра FontSize. Что же касается поля nFontSize, то в нем тоже хранится значение параметра FontSize, но не в текстовом, а в цифровом виде.

Наш аплет отображает в своем окне текстовую строку, передаваемую через параметр TextString, а также значения всех других параметров. При этом в контексте отображения устанавливается шрифт с названием, заданным параметром TextFont, и размером символов, указанным в параметре FontSize (рис. 1).

pic1.gif (1445 bytes)

Рис. 1. В окне аплета отображаются значения параметров аплета

Перейдем к описанию методов аплета.

Метод init

Метод init прежде всего получает значения всех трех параметров, вызывая для этого метод getParameter:

String parm;
    
parm = getParameter("TextString");
if(parm != null)
  parmTextString = parm;
  
parm = getParameter("TextFont");
if(parm != null)
  parmTextFont = parm;
  
parm = getParameter("FontSize");
if(parm != null)
  parmFontSize = parm;

Если какой-нибудь параметр не определен, метод init не изменяет значение соответствующего поля, заданное по умолчанию.

На следующем этапе текстовое значение параметра аплета FontSize преобразуется в численное и записывается в поле nFontSize:

try
{  
  Integer intVal = 
    new Integer(parmFontSize);
  nFontSize = intVal.intValue();
}
catch(Exception ex)
{
}

В том случае, когда численный параметр указан неверно, в процессе преобразования возникает исключение. При этом метод init не изменяет содержимое поля nFontSize, сохраняя в нем значение, установленное по умолчанию. Таким образом мы нейтрализуем возможную ошибку.

Последнее действие, выполняемое методом init - установка цвета фона окна и цвета отображаемого в нем текста:

setBackground(Color.yellow);
setForeground(Color.black);

Метод getAppletInfo

Метод getAppletInfo возвращает строку названия аплета и не имеет никаких особенностей:

public String getAppletInfo()
{
  return "Name: Get Parameter Applet";
}

Метод getParameterInfo

Метод getParameterInfo возвращает описание параметров аплета в виде двухмерного массива строк:

public String[][] getParameterInfo()
{
  String[][] paramInfo = 
  {
    {
      "TextString", "String", "Param string"
    },
    {
      "TextFont", "String", "Helvetica"
    },
    {
      "FontSize", "String", "24"
    }
  };
  
  return paramInfo;
}

Для каждого параметра в этом массиве хранится его имя, тип и значение по умолчанию.

Метод paint

Метод paint отображает значение параметров аплета в его окне.

Поля yStart и yCurrent используются для организации вывода в окно аплета в консольном режиме:

int yStart = 20;
int yCurrent = yStart;

Перове из них содержит координату Y первой строки, а второе, смещение текущей строки относительно верхней границы окна аплета.

Перед выводом строки в контексте отображения устанавливается красный цвет фона, а также выбирается шрифт:

g.setColor(Color.red);
g.setFont(new Font(
  parmTextFont, Font.PLAIN, nFontSize));

Параметры шрифта определяются соответствующими значениями, полученными через параметры аплета.

Затем мы получаем метрики выбранного шрифта, необходимые для вычисления смещения текущей отображаемой строки:

FontMetrics fm = g.getFontMetrics();

Строки параметров рисуются в окне аплета методом drawString, причем каждая новая строка сдвигается на высоту символов шрифта, полученную как fm.getHeight():

g.drawString("TextString: " +
  parmTextString, 10, yCurrent);
yCurrent += fm.getHeight();
    
g.drawString("TextFont: " +
  parmTextFont, 10, yCurrent);
yCurrent += fm.getHeight();
    
g.drawString("FontSize: " +
  nFontSize, 10, yCurrent);

Назад Вперед

[Назад]