2a9cfd0b

Метод init


Метод init вызывается один раз при инициализации аплета. Наше приложение его не использует.


Единственная задача метода init нашего приложения - получение параметров аплета и запись их в соотвестствующие поля класса. Эта задача решается с помощью метода getParameter, при этом строка param типа String используется как рабочая:

String param;

param = getParameter(PARAM_String1);

if (param != null)

  m_String1 = param;

Аналогичным образом метод получает значения всех шести параметров.




Метод init получает текущие значения параметров аплета и сохраняет их в соответствующих полях основного класса. Способ получения параметров аналогичен использованному в предыдущем приложении.




В начале своей работы метод init записывает в поле sOut текстовую строку, которая будет записана в выходной поток:

String sOut;

sOut = "Hello, Java!";

Далее метод init создает поток baStream класса ByteArrayOutputStream, устанавливая начальный размер выделенного для него массива равным 255 байт:

ByteArrayOutputStream baStream =

  new ByteArrayOutputStream(255);



Для выполнения форматированного вывода нам нужен поток класса DataOutputStream, который мы и создаем на базе потока baStream:

OutStream = new DataOutputStream(

  new BufferedOutputStream(baStream));

Для записи строки в выходной поток мы воспользовались методом writeBytes:

OutStream.writeBytes(sOut);

Так как наш выходной поток буферизован, после вызова метода writeBytes данные могут остаться в промежуточном буфере, не достигнув массива, выделенного для хранения потока. Чтобы переписать данные из буфера в массив, мы выполняем сброс буфера методом flush:

OutStream.flush();

После сброса буфера (и только после этого) можно копировать содержимое потока методом toByteArray:

bMemStream = baStream.toByteArray();

Этот метод возвращает ссылку на созданный массив, которую мы записываем в поле bMemStream. В дальнейшем на базе этого массива мы создадим поток ввода.

Перед завершением своей работы метод init закрывает входной поток,вызывая метод close:

OutStream.close();




Во время инициализации метод init создает объект класса URL для файла исходных данных:

SrcURL = new URL("http://frolov/chart.txt");

Здесь для экономии места в книге мы указали адрес URL файла исходных данных непосредственно в программе, однако вы можете передать этот адрес аплету через параметр в документе HTML.

Далее для нашего объекта URL мы создаем канал и получаем содержимое объекта (то есть исходные данные для построения диаграммы):

URLContent = SrcURL.openConnection().getContent();

Здесь использована двухступенчатая процедура получения содержимого с созданием канала как объекта класса URLConnection. Вы также можете упростить этот код, воспользовавшись методом getContent из класса URL:

URLContent = SrcURL.getContent();

Результат в обоих случаях будет одинаковый - содержимое файла исходных данных окажется записанным в поле URLContent класса Object.

Если при создании объекта класса URL возникло исключение, метод init записывает в поле errno код ошибки, равный 2, записывая при этом в строку состояния навигатора сообщение “MalformedURLException exception”.

В том случае, когда объект класса URL создан успешно, а исключение возникло в процессе получения содержимого файла, в поле errno записывается значение 1, а в строку состояния навигатора - сообщение "getContent exception".



Содержание раздела