Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Апплеты двойного назначения




 

Апплет двойного назначения - это программа, которая может работать и под управлением браузера, и автономно, как самостоятельное приложение. Создать апплеты двойного назначения достаточно легко. Следует лишь ввести оба метода main() и init() в одну и ту же программу, при этом выполняя в методе main() некоторые специфические действия.

Прежде всего в методе main() необходимо создать рамку окна, в котором будет отображаться вся графика (объект класса Frame). Для этого объекта обязательно надо переопределить обработку события, связанного с закрытием окна-рамки, так как по умолчанию окно не закрывается при нажатии на кнопку закрытия.

С помощью экземпляра апплета можно вызвать методы init () и start (), запуская апплет в методе main() так, как обычно это делает браузер. А затем апплет просто вставляется в окно-рамку.

Передавать приложению параметры можно в командной строке. Т.е. передача параметров апплету двойного назначения должна дублироваться при помощи командной строки и при помощи тега <PARAM> HTML-файла.

 

Пример 1. 9. Апплет двойного назначения

import javax.swing.event.MouseInputAdapter;

import java.applet.Applet;

import java.awt.event.*;

import java.awt.*;

 

public class Combi extends Applet {

int x=10, y=20;

public Combi(){

// обработчики событий от мыши и клавиатуры

}

public void init() { }

public void paint (Graphics g) {

g.drawString("Applet with Events",x, y);

}

public static void main(String args[]) {

Frame fr = new Frame("Апплет двойного назначения");

Combi c = new Combi();

c.init();

fr.add(c);

fr.setSize(400,300);

fr.setVisible(true);

// обработка события закрытие окна-рамки

fr.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e) {

System.exit(0);

} });

}

}

 

Модифицируйте метод paint() так, чтобы в окне апплета выводился режим работы программы: “Application” или “Applet".

Вместо класса Frame возможно использовать класс JFrame из библиотеки Swing. Возможно использование метода этого класса setDefaultCloseOperation (int operation) для определения события, связанного с закрытием окна. Вместо класса Applet возможно использование класса JApplet из того же пакета.

 

import javax.swing.*;

import java.awt.event.*;

 

public class FrameUse {

public static void main(String[] args) {

JFrame frame = new JFrame ("Пример");

int width = 400;

int height = 300;

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setSize(width,height);

frame.setVisible(true);

}

}

 

Практические задания

 

1. Изучить основные понятия и термины Java.

2. Проверить и объяснить работу всех приложений, рассматриваемых в данной работе. Должны быть созданы следующие приложения NewClass (пример 1), TestElements (пример 2), TestModificators (пример 3).

3. Проверить и объяснить работу всех апплетов, рассматриваемых в данной работе. Должны быть созданы следующие апплеты: Hello (пример 4), AppletWithParam (пример 5), ParamUrlImage (пример 6), QuickPicture (пример 7), Event (пример 8), Combi (пример 9).

4. Разработать апплет двойного назначения c использованием классов из библиотеки Swing и AWT. Примерная формулировка задания предполагает:

- создание апплета двойного назначения с отрисовкой изображения в точке щелчка мыши,

- перемещение изображения по клавишам от клавиатуры,

- ввод через параметры апплета или параметры командной строки имени файла с изображением,

- использование двойной буферизации при отрисовки изображения.

 

Вопросы для самопроверки

 

1. Чем отличаются Java-приложения и Java-апплеты?

2. Что такое первичный класс приложения? Какой обязательный метод он должен содержать?

3. Какие существуют виды переменных Java, чем они отличаются друг от друга?

4. Какие примитивные типы определены в Java?

5. Что делает конструктор класса? Должен ли он обязательно явно присутствовать в объявлении класса?

6. Какие существуют виды ссылочных типов? Как реализуются ссылочные переменные?

7. Что такое типы, определенные пользователем?

8. В чем особенности строковых переменных?

9. Чем массивы Java отличаются от массивов других языков, их преимущества?

10. Как переменные различных видов передаются в качестве параметров методам?

11. Что такое элементы класса и элементы экземпляра класса, чем они отличаются друг от друга? Как нужно указывать, что переменная или метод является элементом класса, а не экземпляра?

12. Для чего используются модификаторы доступа? Какие существуют модификаторы доступа, как они ограничивают доступ к элементам?

13. Что позволяет делать процесс наследования? Что такое суперкласс и подкласс?

14. Что такое повторное использование кода?

15. Какие заранее определенные переменные содержит каждый класс Java?

16. Что можно сделать при помощи переменной this?

17. Что можно сделать при помощи переменной super?

18. Что такое скрытие переменной, затемнение переменной и замещение метода?

19. Как импортировать классы из пакетов?

20. Как добавить класс в пакет?

21. Чем выполнение апплета отличается от выполнения простого Java-приложения?

22. Чем отличаются первичные классы приложения и апплета?

23. Какие методы должен переопределять класс апплета?

24. Каковы принципы функционирования апплета?

25. Как передаются параметры апплету?

26. Как загрузить графическое изображение в апплет, приложение?

27. Как ускорить вывод графических изображений, загружаемых из файла и устранить мерцание при выводе изображений?

28. Что такое апплеты двойного назначения? Как они работают?

ГЛАВА 2. ОБРАБОТКА СОБЫТИЙ. ГРАФИКА.

Графика в Java

 

Графические операции всегда выполняются над объектом Graphics (контекст отображения). Например, в апплетах для вывода в окно используется метод paint(), которому передается параметр - объект класса Graphics.

 

Некоторые методы класса Graphics:

clearRect -очищает указанный прямоугольник, заполняя цветом фона;

clipRect -задает область ограничения вывода;

copyArea -копирует область экрана;

create -создает новый объект, который является копией исходного объекта;

draw3DRect -рисует прямоугольник с объемным эффектом;

drawArc -рисует дугу текущим цветом;

drawBytes - р исует указанные байты текущим шрифтом и цветом;

drawChars -рисует указанные символы текущим шрифтом и цветом;

drawImage -рисует указанное изображение типа Image;

drawLine - р исует линию между точками;

drawOval -рисует овал внутри указанного прямоугольника текущим цветом;

drawPolygon - р исует многоугольник текущим цветом;

drawRect -Рисует контур прямоугольника текущим цветом;

drawRoundRect -Рисует контур прямоугольника с закругленными краями;

drawString -Рисует указанную строку текущим шрифтом и текущим цветом;

fill3DRect - р аскрашивает цветом прямоугольник с объемным эффектом;

fillArc -заполняет дугу текущим цветом;

fillOval - з аполняет овал текущим цветом;

fillPolygon - з аполняет многоугольник текущим цветом;

fillPolygon -заполняет объект класса Polygon текущим цветом;

fillRect -заполняет прямоугольник текущим цветом;

fillRoundRect -заполняет прямоугольник с закругленными краями;

setPaintMode -устанавливает режим заполнения текущим цветом.

Цвет. Для задания текущего цвета используется метод setColor() класса Graphics. Создадим случайный цвет и установим его, g - объект Graphics:

g.setColor(new Color((float)Math.random(), (float)Math.random(),

(float)Math.random()));

Цветовая модель языка Java представляет собой 24-разрядную модель RGB (красный, синий, зеленый), следовательно объекты класса Color могут содержать 24 разряда цветовой информации (что соответствует 16 миллионам различных цветов).

Для использования цвета необходимо сначала создать объект Color и передать в него значения красного, зеленого и синего цвета (существуют два конструктора - для задания целочисленных значений (каждое значение от 0 до 255) и значений с плавающей точкой (каждое значение от 0.0 до 1.0)). Совместно эти значения и определяют цвет.

Color clr1=new Color(255,0,0); // создать красный цвет

Color clr2=new Color(255,255,255); // создать белый цвет

Color clr3=new Color(0,0,0); // создать черный цвет

Можно использовать заранее определенные цвета Color.white, Color.lightGray, Color.gray, Color.darkGray, Color.black, Color.red, Color.pink, Color.orange, Color.yellow, Color.green, Color.magenta, Color.cyan, Color.blue. При использовании этих цветов не нужно создавать новый объект Color, можно записать следующее:

g.setColor(Color.red);

Помимо установки цвета отображения текста и графики методом setColor(), можно установить цвет фона и цвет переднего плана методами setBackground() и setForeground() класса Component.

Шрифты. Класс Graphics позволяет размещать на экране текст с использованием установленного шрифта. Для задания шрифта необходимо создать объект класса Font с параметрами: название гарнитуры шрифта (тип String), стиль шрифта (тип int) и размер шрифта в пунктах (тип int):

Font f=new Font("Times Roman",Font.BOLD,72);

Хотя можно выбрать любое начертание (гарнитуру) шрифта, рекомендуется использовать достаточно ограниченный набор шрифтов ("Times Roman", "Courier", "Helvetica"), которые имеются на всех системах.

Для задания стиля шрифта используются константы класса Font: Font.PLAIN, Font.BOLD и Font.ITALIC. Эти стили можно объединять при помощи операции +. После создания шрифта его можно установить для использования при помощи метода setFont() класса Graphics:

g.setFont(new Font("Times Roman",Font.BOLD,72));

Некоторые методы класса Font:

getFamily -получает название шрифта, зависящее от платформы;

getName -получает логическое имя шрифта;

getStyle -получает стиль шрифта;

getSize -получает размер шрифта в пунктах;

isPlain -возвращает true, если шрифт простой;

isBold -возвращает true, если шрифт полужирный;

isItalic - в озвращает true, если шрифт курсивный.

getFont - п олучает шрифт из списка параметров системы

Если выбрать шрифт, который не установлен на конкретной машине, Java заменит его стандартным шрифтом (например, Courier). Для того, чтобы узнать какие шрифты доступны, можно воспользоваться методом getAllFonts(), определенным в классе GraphicsEnvironment. Ну, а если Вы захотите определить разрешение экрана и его размер, то можно воспользоваться методами класса Toolkit: getScreenResolution() и getScreenSize().

Создадим апплет двойного назначения FontsList, в окне которого отображается список всех доступных апплету шрифтов.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...