Конвертація додатків в аплети
Зміст
Аплет HelloWorld. 3
Конвертація додатків в аплети.
Життєвий цикл аплету. 4
Опрацювання подій. 5
Методи роботи з UI-компонентами. 6
Приклад роботи з UI-компонентом.
Java-аплет - це прикладна програма на Java у формі байт-коду. Java-аплети виконуються у веб-браузері з використанням віртуальної Java машини (JVM), або в Sun's AppletViewer, автономному інструменті для тестування аплетів. Java-аплети були впроваджені в першій версії мови Java в 1995 році.
Аплети використовуються для надання інтерактивних можливостей веб-застосунків, які не можуть бути надані HTML. Так як байт-код Java платформо-незалежний, то Java-аплети можуть виконуватися браузерами багатьох платформ.
Головний клас аплету розширює клас java.applet.Applet або, якщо створюється аплет Swing, javax.swing.JApplet. Клас повинен перевизначити методи створення інтерфейсу користувача всередині себе. (Applet є нащадком Panel, який, своєю чергою, є нащадком Container).
Переваги використання Java-аплетів
- аплет може працювати на «всіх» встановлених на той час версіях Java, а не тільки з останньою версією; однак, якщо аплет потребує останньої версії JRE, то клієнт буде змушений чекати тривалішого завантаження;
- аплет підтримується більшістю браузерів;
- він кешується в більшості браузерів, а тому швидко завантажуватиметься при поверненні на веб-сторінку; але аплет може зберігатися в кеші та створювати проблеми після виходу нових версій;
- він може мати повний доступ до машини, на якій виконується, якщо користувач згоден;
- він може перенести роботу з сервера до клієнта, роблячи Інтернет-рішення з,великою кількістю користувачів/клієнтів.
Java-аплет має такі недоліки:
- він вимагає встановлення Java-розширення (plug-in), який не у всіх браузерах доступний за умовчанням;
- реалізація, прийнята Java-plug-in компанії Sun, немає для 64-разрядных процесорів;
- він не може запуститися доти, доки не запуститься віртуальна Java-машина, і це може зайняти значний час при першому запуску;
- створення і дизайн хорошого інтерфейсу користувача з використанням аплетів вважається більш складним завданням, ніж за допомогою технології, заснованої на HTML;
- через ненадійність аплету, для нього суттєво обмежується доступ до системи користувача: зокрема, він не має прямого доступу до диска клієнта або буфера обміну;
- деякі організації допускають лише програмне забезпечення, встановлене адміністраторами. В результаті багато користувачів не можуть бачити аплети за промовчанням.
- аплети можуть вимагати використання певного JRE.
Аплет HelloWorld
public class HelloWorld extends JApplet
public void paint(Graphics g)
g.drawString("Hello world!", 5, 15);
Цей код необхідно запустити в режимі Run as Java Applet. У результаті на екрані з'явиться вікно appletviewer, в якому буде написано лише один рядок: "Hello world!".
Якщо аплет використовує GUI компоненти із Swing, необхідно успадкування від javax.swing.JApplet.
Якщо Swing не використовується, можна успадковуватися від java.applet.Applet.
Конвертація додатків в аплети
Як неважко помітити, викладений код не містить методу main. У цьому аплети значно відрізняються від звичайних додатків, у яких є, принаймніПринаймні один клас з методом main. Натомість в аплетах під час виконання викликаються кілька різних методів.
Що потрібно, щоб перетворити додаток на аплет:
- Потрібно створити клас-спадкоємець java.applet.Applet, в якому перевизначити метод init, в якому проініціалізувати всі необхідні ресурси (так само, як це відбувалося в методі main).
- Метод init може викликатися багаторазово (на відміну методу main), слід враховувати це за його проектуванні. + Panel (якщо використовується така) на вершині ієрархії повинна додаватися в аплет методі init (так само як це зазвичай відбувалося в методі main).
- Клас аплету оголошено як public (щоб appletviewer мав до нього доступ).
- Аплет успадковується від Applet/JApplet, а додаток від Frame/JFrame.
- Аплет не має методу main.
- У аплеті конструктор замінено методами start and init methods.
- GUI компоненти додаються безпосередньо в Applet, тоді як у випадку зі звичайним додатком ці компоненти додаються в content JFrame'a.
Життєвий цикл аплету
// Немає необхідності успадковувати від JApplet, т.к. компоненти не додаються
// Відбувається просто малювання
public class Simple extends Applet
public void init()
buffer = новий StringBuffer();
public void start()
public void stop()
public void destroy()
addItem("preparing for unloading. ");
private void addItem(String newWord)
public void paint(Graphics g)
// Відмальовуємо рядок усередині прямокутника
g.drawString(buffer.toString(), 5, 15);
Таким чином, аплет може:
- Ініціалізувати себе (метод init).
- Розпочати роботу (метод start).
- Перестати працювати (методstop). Відбувається, коли користувач відкриває іншу сторінку. Якщо він повертається назад виконується метод start.
- Виконати фінальне очищення даних перед тим як вивантажитися (спочатку виконується метод stop, потім destroy). Відбувається, наприклад, при перезавантаженні аплета (оновлення сторінки).
При цьому зовсім не обов'язково, щоб програміст перевизначав одразу всі ці методи.
Обробка подій
// Немає необхідності успадковувати від JApplet, т.к. компоненти не додаються
// Відбувається просто малювання
public class SimpleClick extends Applet
public void init()
buffer = новий StringBuffer();
public void start()
public void stop()
public void destroy()
addItem("preparing for unloading. ");
addItem(String newWord)
public void paint(Graphics g)
// Відмальовуємо рядок усередині прямокутника
g.drawString(buffer.toString(), 5, 15);
// Наступна група порожніх методів може бути видалена у разі реалізації
public void mouseEntered(MouseEvent event)
public void mouseExited(MouseEvent event)
public void mousePressed(MouseEvent event)
public void mouseReleased(MouseEvent event)
public void mouseClicked(MouseEvent event)
Як видно, немає жодних разючих відмінностей обробки подій від звичайних програм. При натисканні кнопкою миші з'явиться напис «click. ».
UI-компоненти
- Single-line text fields (javax.swing.JTextField)
- Великий text display and editing areas (javax.swing.JTextArea)
- Drawing areas (java.awt.Canvas)
- Menus (javax.swing.JMenu, javax.swing.JMenuBar javax.swing.JMenuItem, javax.swing.JCheckBoxMenuItem)
- Containers(javax.swing.JPanel, javax.swing.JWindow and its subclasses)
| наступна лекція = = gt; | ||
| Нормування похибок при вимірі опорів | Основні команди Total Commander |