Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 10 СМП.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
167.04 Кб
Скачать

Опис методу init()

Далі йде вже знайомий метод init(), в якому аплет може виконати необхідні ініціюючі дії. В даному випадку, спочатку оголошується і ініціалізується менеджер розташування:

GridLayout layout = new GridLayout (2, 4, 10, 10);

setLayout (layout);

Java-програми використовують менеджери розташування для управління розміщенням компонентів програми на екрані. У мові Java є багато типів менеджерів розташування, кожен з яких представлений власним класом в пакеті awt. Якщо ви не створите і не встановите ваш менеджер розташування, то Java за замовчуванням використовує менеджер FlowLayout, який розміщує компоненти по горизонталі, один за одним. У аплеті InternetApplet використовується менеджер GridLayout, який має в своєму розпорядженні компоненти в вузлах решітки. Конструктор класу GridLayout приймає чотири параметри:

– Кількість рядів в решітці

– Кількість стовпців в решітці

– Відстань по горизонталі між комірками решітки

– Відстань по вертикалі між комірками решітки

Якщо останні два параметри опускаються, то за замовчуванням вони рівні 0.

Функція setLayout() є методом класу container, який являє собою суперклас (батьківський клас в ієрархії класів) класу Applet. Єдиний аргумент цієї функції – посилання на об'єкт менеджера розташування. Після виклику методу setLayout() інтерпретатор Java знатиме, що необхідно використовувати новий менеджер розташування, а не заданий за замовчуванням.

Після того як заданий менеджер розташування, програма встановлює шрифт, який буде використовуватися в аплеті для всіх текстових повідомлень:

Font font = new Font ( "TimesRoman", Font.PLAIN, 24);

setFont (font);

Конструктор класу Font отримує три параметри: назва шрифту, атрибут і розмір. Назва шрифтів – Dialog, Helvetica, TimesRoman, Courier або Symbol; атрибутами можуть бути Font.PLAIN, Font.ITALIC або Font.BOLD (стандартний шрифт, курсив і жирний). Метод setFonto встановлює новий шрифт для аплету.

Наступне завдання – створити і включити в аплет керуючі кнопки, які використовуються для вибору Web-вузлів. У лістингу 10.13 показані оператори, які виконують цю функцію.

Лістинг 10.13. LST10_13.TXT. Створення керуючих кнопок

Button button = new Button("Sun");

add(button);

button = new Button("Netscape");

add(button);

button = new Button("Microsoft");

add(button);

button = new Button("Macmillan");

add(button);

button = new Button("Time");

add(button);

button = new Button("CNet");

add(button);

button = new Button("Borland");

add(button);

button = new Button("Yahoo");

add(button);

Конструктор класу Button має один аргумент, який являє собою текстову мітку, яка з'являється на кнопці при її відображенні. Метод add() додає кнопку до наступної комірки, наявної в менеджері GridLayout.

І нарешті, в методі init() змінна badURL встановлюється рівною false:

badURL = false;

Опис методу action()

Більшість призначених для користувача подій, що виникають в аплеті, можна обробляти, перевизначаючи метод action(). Цей метод має наступний вигляд:

public boolean action (Event evt, Object arg)

Як можна бачити, метод action() має два параметри: об'єкт Event і об'єкт Object. Досить знати, що arg є текстовою міткою для керуючої кнопки.

Коли користувач клацає по одній з кнопок аплету, викликається метод action(). Як було сказано, параметр arg – це текстова мітка натиснутої кнопки, тому досить легко визначити, яку кнопку вибрав користувач. Для цього в програмі internetAppiet використовується оператор if-eise, який перевіряє мітку кнопки. Коли програма доходить до кнопки, яка натиснута користувачем, вона встановлює значення змінної str, яка є об'єктом Java-класу string class, що дорівнює заданій URL-адресі; це показано в лістингу 10.14.

Лістинг 10.14. LST10_14.TXT. Отримання обраної URL-адреси

String str;

if (arg == "Sun")

str = "http://www.sun.com";

else if (arg "Netscape")

str = "http://www.netscape.com";

else if (arg == "Microsoft")

str = "http://www.microsoft.com";

else if (arg == "Macmillan")

str = "http://www.mcp.com";

else if (arg == "Time")

str = "http://www.pathfinder.com";

else if (arg == "CNet")

str = "http://www.cnet.com";

else if (arg == "Borland")

str = "http://www.borland.com";

eise

str = "http://www.yahoo.com";

Після отримання обраної URL-адреси аплет може підключатися до Web-вузла. Однак, перед тим як це робити, програма повинна встановити блок try-catch, оскільки конструктор класу URL запускає виняток MalformedURLException, який має оброблятися програмою. Програмний блок try намагається створити URL-об'єкт і з'єднатися з даними Web-вузлом, як показано в лістингу 10.15.

Лістинг 10.15. LST10_15.TXT. Підключення до Web-вузла

try

{

URL url = new URL(str);

AppletContext context .= getAppletContext();

context.showDocument(url);

}

У цьому блоці програма спочатку намагається створити URL-об'єкт, використовуючи текстовий рядок з URL-адресою. У разі помилки клас URL запускає виняток MaiformedURLException і програма продовжується з блоку catch, описаного нижче. Якщо метод об'єкту URL побудований успішно, для отримання посилання на об'єкт аплету Appletcontext викликається метод getAppletContext(). Саме метод showDocument() даного об'єкта забезпечує підключення аплету до вибраної URL-адреси.

Якщо конструктор класу URL запускає виняток, управління передається оператору catch, показаному в лістингу 10.16.

Лістинг 10.16. LST10_16.TXT. Програмний блок catch

catch (MaiformedURLException е)

{

badURL = true;

repaint();

}

У цьому блоці програма просто встановлює прапор badURL рівним true і викликає метод repaint() для відображення повідомлення про помилку до відома користувача.

Опис методу paint()

У лістингу 10.17 показаний метод paint() аплету, який нічого не робить, крім виведення повідомлення про помилку, якщо прапор badURL встановлений рівним true.

Зауваження

Оскільки URL-адреси жорстко зашиті в програму, малоймовірно, щоб ці адреси були задані неправильно. Однак, якщо ви зміните URL-адресу деякої кнопки, повідомлення про помилку дозволяє дізнатися, що ця адреса вказана неправильно.

Лістинг 10.17. LST10_17.TXT. Метод paint()

public void paint(Graphics g)

{

if (badURL)

g.drawstring("Bad URL!", 60, 130); //Невірна URL-адреса

}

Функція drawstring(), яка є методом класу Graphics, відображає текстовий рядок на екрані. Її аргументи –рядок, що виводиться і координати X, Y рядка у вікні.