Главная » Java, Web » Апплеты AWT и апплеты Java 2

0

В примерах, рассмотренных выше, мы использовали пакет j ava. awt. *. Недостатки, обнаруженные в этом пакете, привели к созданию пакета Swing, явившегося составной частью версии Java 2 начиная с jdkl.2. Существует возможность создания апплетов на основе пакета Swing. Однако при этом нужно иметь в виду, что некоторые версии браузеров не будут поддерживать такие апплеты, к тому же апплеты, основанные на пакете swing, отнимают большие ресурсы, чем апплеты, основанные на AWT (Abstract Window Toolkit, абстрактный оконный интерфейс).

Пакет javax. swing содержит класс JApplet. Класс javax. swing. JApplet можно использовать в качестве базового класса при создании апплетов. Класс JApplet является подклассом по отношению к классу Applet, т. е. апплеты Jappiets являются полноценными апплетами, но возможности использовать Swing у них встроены. Рисование при помощи апплетов JApplet несколько более усложнено. Для класса, основанного на JApplet, не нужно писать метод paint (), зато здесь необходим метод инициализации апплета init (). Рисование же осуществляется при помощи вставки компонентов.

Первый апплет JApplet

Рассмотрим пример апплета, в котором проявляются основные идеи использования пакета swing и программирования графического интерфейса. Программирование элементов графики предполагает использование готовых компонентов, например, таких как кнопки и т. п., посредством которых апплет может взаимодействовать с пользователем. В примере (листинг 1.6) апплет состоит только из кнопки (листинг 1.7).

Листинг 1.6. Код апплета находится в файле Knopka.java

import javax.swing.*; // классы Swing GUI

import java.awt.event.*; // классы обработки событий

public class Knopka extends JApplet implements ActionListener { public void init() {

// метод вызывается после создания апплета, //но перед тем, как апплет будет отображен в окне JButton knopka = new JButton("Nazhmi Menya!"); knopka.addActionListener(this); getContentPane().add(knopka);

public void actionPerformed(ActionEvent evt) { // Метод используется при наступлении события. //В данном случае возможно только одно событие – // нажатие кнопки.

//В ответ отображается диалоговое окно // с информацией и кнопкой ОК,

// нажатие которой закрывает новое диалоговое окно.

String title = "Priovetstvuyu vas"; // заголовок диалогового окна

String message = "Privet vam ot biblioteki Swing.";

JOptionPane.showMessageDialog(null, message, title,

JOptionPane.INFORMATIONJMESSAGE);

Этот апплет вызывается из файла Knopka.html.

Листинг 1.7. Файл Knopka.html

<р align=center>

<applet code="Knopka.java" width=250 height=14 0 > </applet> </p>

При загрузке этого апплета в окно браузера появляется кнопка размером 250 х 140 пикселов, нажатие которой создает окно с информацией и кнопкой ОК (рис. 1.6).

Кнопка создается на основе класса кнопок jButton (класс javax.swing. jButton). После создания апплета кнопка также должна быть создана и вставлена в апплет. Эта задача входит в перечень задач, выполняемых при инициализации апплета. Кнопка создается при помощи следующей функции:

JButton knopka = new JButton("Nazhmi Menya!");

В качестве параметра конструктору передается строка, которая будет отображена на кнопке. Кнопка должна быть вставлена в контекст панели апплета с помощью метода

getContentPane().add(knopka);

Нажатие кнопки создает событие, тип которого ActionEvent. Для обработки событий этого типа создаем метод

public void actionPerformed(ActionEvent evt) { … }

Рис. 1.6. Функционирование апплета Swing

Кнопка создается на основе класса кнопок jButton (класс javax.swing. jButton). После создания апплета кнопка также должна быть создана и вставлена в апплет. Эта задача входит в перечень задач, выполняемых при инициализации апплета. Кнопка создается при помощи следующей функции:

JButton knopka = new JButton("Nazhmi Menya!");

В качестве параметра конструктору передается строка, которая будет отображена на кнопке. Кнопка должна быть вставлена в контекст панели апплета с помощью метода

getContentPane().add(knopka);

Нажатие кнопки создает событие, тип которого ActionEvent. Для обработки событий этого типа создаем метод

public void actionPerformed(ActionEvent evt) { … }

Кнопке необходимо сообщить, что апплет прослушивает связанные с ней события. Это делается при помощи метода addActionListener о , который используется внутри метода init ().

Что происходит внутри метода actionPerformed () ? При нажатии кнопки должно появиться окно с информацией. Это легко осуществимо средствами пакета swing. Класс swing, j avax. joptionPane содержит статический метод showMessageDiaiog (), с помощью него и решается поставленная задача.

В этом примере апплет сам заботится о том, чтобы прослушивать сообщения кнопки. Однако это не самый лучший способ. Для прослушивания можно выделить специальный объект, который будет отвечать за обработку событий. Это осуществляется следующим образом (листинг 1.8).

Листинг 1.8. Файл knopka2.java                                                                                                       j

import javax.swing.*; impo rt j ava.awt.event.*;

public class Knopka2 extends JApplet { public void init() {

JButton knopka = new JButton("Nazhmi Menya!"); knopka.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { // метод вызывается при нажатии кнопки String title = "Privet"; // название кнопки String message = "Esche raz privet ot Swing."; JOptionPane.showMessageDiaiog(null, message, title, JOptionPane.INFORMATIONJMESSAGE);

}

}

) ;

getContentPane().add(knopka);

Источник: Будилов В. А. Интернет-программирование на Java. — СПб.: БХВ-Петербург, 2003. — 704 е.: ил.

По теме:

  • Комментарии