JAVA-ФАЙЛ АППЛЕТА ДВОЙНОГО НАЗНАЧЕНИЯ, РЕАЛИЗУЮЩЕГО ИНТЕРФЕЙС RUNNABLE, И HTML-ДОКУМЕНТ СО ССЫЛКОЙ НА НЕГО

Данное приложение содержит код апплета двойного назначения, реализующего интерфейс Runnable, и html-файл со ссылкой на него. Данные тексты могут использоваться как шаблоны при создании класса апплетов, следует только предварительно изменить в них слово ИмяКласса на имя создаваемого класса.

Листинг Java-файла класса апплета: import java.applet.*; import java.awt.*; import MainWndFrame; // импорт класса рамки (фрейма) //============================================= // Основной класс для апплета ИмяКласса //============================================= public class ИмяКласса extends Applet implements Runnable { // задача, которая будет одновременно с апплетом private Thread m_Task = null; // Признак режима работы программы: // true/false - приложение/апплет //------------------------------------------------ private boolean m_fStandAlone = false; //------------------------------------------------ public static void main(String args[]) {// Создать рамку (фрейм) для апплета MainWndFrame frame = new MainWndFrame("Title"); // До изменения размеров фрейма отобразить его. // Это необходимо для того, чтобы метод insert() // выдавал правильные значения frame.show(); frame.hide(); frame.resize(frame.insets().left + frame.insets().right + 320, frame.insets().top + frame.insets().bottom + 240); // Создание объекта апплета, связывание апплета и фрейма ИмяКласса applet_Combi = new ИмяКласса(); frame.add("Center", applet_Combi); // Установление признака режима работы - приложение applet_Combi.m_fStandAlone = true; // Вызов методов ааплета для его запуска applet_Combi.init(); applet_Combi.start(); // Отображение окна фрейма frame.show(); } //------------------------------------------------ public ИмяКласса() {// Сделать: Добавьте сюда код конструктора } //------------------------------------------------ public String getAppletInfo() { return "Name: CombiApplet\r\n" +""; } //------------------------------------------------ public void init() { resize(320, 240); // Сделать: Добавьте сюда код инициализации } //------------------------------------------------ public void destroy() {// Сделать: Добавьте сюда код завершения работы апплета } //------------------------------------------------ public void paint(Graphics g) {// Сделать: Добавьте сюда код перерисовки окна апплета g.drawString("Running: " + Math.random(), 10, 20); } //------------------------------------------------ public void start() { // если задача еще не создана, апплет создает // новую задачу как объект класса Thread if (m_Task == null) { m_Task = new Thread(this); // создание задачи m_Task.start(); // запуск задачи } // Сделать: Добавьте сюда код, который должен // работать при запуске апплета } //------------------------------------------------ public void stop() { // когда пользователь покидает страницу, // метод stop() класса Thread останавливает задачу if (m_Task != null) // если задача была создана { m_Task.stop(); //остановка задачи m_Task = null; // сброс ссылки на задачу } // Сделать: Добавьте сюда код, который должен // работать при остановке апплета } // Метод, который работает в рамках отдельной задачи. // Он вызывает периодическое обновление окна апплета //------------------------------------------------ public void run() { // выполняем обновление окна в бесконечном цикле while (true) { try { // вызов функции обновления repaint(); // Сделать: Добавьте сюда код, который должен // здесь работать в рамках задачи //выполнение небольшой задержки Thread.sleep(50); } catch (InterruptedException e) {// Сделать: Добавьте сюда код, который должен // здесь работать при генерации исключения // если при выполнении задержки произошло // исключение, останавливаем работу апплета stop(); } } } // Сделать: Добавьте сюда код, необходимый для работы // создаваемого специализированного апплета }Листинг Java-файла класса фрейма для апплета: import java.awt.*; //============================================ // Этот класс действует как окно, в котором отображается апплет, // когда он запускается как обычное приложение //============================================ class MainWndFrame extends Frame { // Конструктор класса //------------------------------------------------ public MainWndFrame(String str) { super (str); // Сделать: Добавьте сюда код конструктора } //------------------------------------------------ public boolean handleEvent(Event evt) { switch (evt.id) {// при закрытии окна завершается работа приложения //-------------------------------- case Event.WINDOW_DESTROY: // Сделать: Добавьте сюда код, который должен // работать при остановке приложения dispose(); // удаление окна System.exit(0); // завершение приложение return true; default: // передача сообщения на обработку // методу базового класса return super.handleEvent(evt); } } }Листинг HTML-файла: <html> <head> <title> ИмяКласса </title> </head> <body> <hr> <applet code= ИмяКласса.class name= ИмяКласса width=320 height=240 > </applet> <hr> </body> </html>

ПРИЛОЖЕНИЕ 7

САМОСТОЯТЕЛЬНОЕ ГРАФИЧЕСКОЕ JAVA-ПРИЛОЖЕНИЕ

Данное приложение содержит код самостоятельного графического Java-приложения. Данные тексты могут использоваться как шаблоны при создании класса приложения, следует только предварительно изменить в них слово ИмяКласса на имя создаваемого класса.

Листинг Java-файла класса приложения: import java.awt.*; //============================================= // Основной класс для приложения ИмяКласса //============================================= public class ИмяКласса { public static void main(String args[]) { // Создать рамку (фрейм) MainWndFrame frame = new MainWndFrame("Title"); // Отображение окна фрейма frame.show(); } // Сделать: Добавьте сюда код, необходимый для работы // создаваемого специализированного приложения } //============================================= // Класс главного фрейма для приложения //============================================= class MainWndFrame extends Frame { // Конструктор класса //-------------------------------------------- public MainWndFrame(String str) { super (str); // Сделать: Добавьте сюда код конструктора resize(320,240); // задание необходимых размеров окна // Сделать: здесь можно определить различные параметры фрейма, // например, форму курсора, меню, добавить компоненты и др. } //-------------------------------------------- public boolean handleEvent(Event evt) // обработчик событий { switch (evt.id) {// при закрытии окна завершается работа приложения //---------------------------- case Event.WINDOW_DESTROY: // Сделать: Добавьте сюда код, который должен // работать при остановке приложения dispose(); // удаление окна System.exit(0); // завершение приложение return true; default: // передача сообщения на обработку // методу базового класса return super.handleEvent(evt); } } }

Библиографический список

 

1. Аарон И. Волш. Основы программирования на Java для World Wide Web. Киев: "Диалектика", 1996.

2. Вебер Д.. Технология Java в подлиннике. С.-П.: "BHV-СанктПетербург", 1997.

3. Гослинг Дж., Арнольд К. Язык программирования Java. С.-П.: Издательский дом "Питер", 1997.

4. Джамса К. Изучи сам Java сегодня. Мн: ООО "Попурри", 1996.

5. Нотон П. Java: справочное руководство. M.: Восточная книжная компания, 1996.

6. Родли Дж. Создание Java-апплетов. К: НИПФ "ДиаСофт Лтд", 1996.

7. Томас М., Пател П., Хадсон А., Болл Д. Секреты программирования для Internet на Java. С.-П.: Издательский дом "Питер", 1997.

8. Фролов А.В., Фролов Г.В. Библиотека системного программиста, тт.30, 32. М.: "ДИАЛОГ-МИФИ", 1997.

9. Холзнер С. Visual J++ 1.1 с самого начала. С.-П.: Издательский дом "Питер", 1997.

10. Эферган М. Java: справочник. С.-П.: Издательский дом "Питер", 1997.

 


СОДЕРЖАНИЕ

 

Введение 3

Лабораторная работа № 1 4

Методические указания к лабораторной работе № 1 4

1 Простейшее приложение Hello 4

2 Структура Java-программы 7

2.1 Переменные 7

2.1.1 Примитивные типы 9

2.1.2 Ссылочные типы 10

2.2 Методы 14

2.3 Классы 18

2.3.1 Статические и динамические элементы 18

2.3.2 Модификаторы доступа 20

2.3.3 Наследование классов 22

2.3.4 Специальные переменные 23

2.4 Пакеты и импортирование 25

2.4.1 Использование пакетов 25

2.4.2 Создание пакетов 27

Задания к лабораторной работе 28

Контрольные вопросы 28

Лабораторная работа № 2 29

Методические указания к лабораторной работе № 2 29

1 Простейший апплет Hello 31

1.1 Апплет Hello, управляемый мышью 33

2 Простейший апплет HelloApplet, созданный Java Applet Wizard 34

2.1 Создание шаблона апплета HelloApplet 34

2.2 Исходные файлы апплета HelloApplet 34

2.3 Упрощенный вариант исходного текста апплета HelloApplet 39

3 Аргументы апплета 40

3.1 Передача параметров апплету 40

3.2 Апплет, принимающий параметры 41

3.3 URL-адреса, загрузка и вывод графических изображений 46

3.4 Двойная буферизация графическогоизображения 47

4 События и их обработка 49

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

4.2 Обработка событий 51

4.3 Апплет, обрабатывающий события 52

4.4 Устранение мерцания при выводе, двойная буферизация 54

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

Задания к лабораторной работе 60

Контрольные вопросы 61

Лабораторная работа № 3 61

Методические указания к лабораторной работе № 3 61

1 Рисование в окне 61

1.1 Графика 61

1.2 Цвет 63

1.3 Шрифты 64

1.4 Приложение FontsList 65

2 Обработка событий 66

2.1 Как обрабатываются события 66

2.2 События от мыши 68

2.3 Приложение LinesDraw 69

2.4 События от клавиатуры 72

2.5 Приложение KeyCodes 72

Задания к лабораторной работе 74

Контрольные вопросы 74

Лабораторная работа № 4 74

Методические указания к лабораторной работе № 4 74

1 Компоненты GUI 74

2 Устройства или элементы управления 77

2.1 Кнопки 77

2.2 Флажки (или переключатели) 80

2.3 Меню выбора (или выпадающие списки) 82

2.4 Раскрывающиеся списки 83

2.5 Полосы прокрутки 86

2.6 Метки 88

2.7 Текстовые компоненты 89

3 Приложение AllElements 90

Задания к лабораторной работе 96

Контрольные вопросы 96

Лабораторная работа № 5 97

Методические указания к лабораторной работе № 5 97

1 Контейнеры 97

1.1 Панели 98

1.2 Окна 100

1.3 Рамки, фреймы 101

1.3.1 Меню 104

1.3.2 Диалоги 108

2 Менеджеры размещения компонентов 111

2.1 Типы менеджеров размещения 111

2.2 Выбор менеджера размещения 114

3 Поведение контейнера при наличии элементов управления 116

4 Приложение PanelsDemo1 116

5 Приложение PanelsDemo2 119

6 Приложение WindowsDemo 123

Задания к лабораторной работе 130

Контрольные вопросы 130

Лабораторная работа № 6 130

Методические указания к лабораторной работе № 6 130

1 Процессы, задачи и приоритеты 131

2 Реализация многозадачности в Java 132

2.1 Создание подкласса Thread 132

2.2 Реализация интерфейса Runnable 135

2.3 Применение мультизадачности для анимации 137

2.4 Апплет двойного назначения, реализующий интерфейс Runnable 140

3 Потоки (нити) 146

3.1 Состояние потока 147

3.2 Исключительные ситуации для потоков 149

3.3 Приоритеты потоков 149

3.4 Группы потоков 150

4 Приложение VertScroller 151

Задания к лабораторной работе 153

Контрольные вопросы 153

Лабораторная работа № 7 154

Методические указания к лабораторной работе №7 154

1 Самостоятельные графические приложения 154

2 Потоки ввода-вывода в Java 157

2.1 Обзор классов Java для работы с потоками 157

2.2 Стандартные потоки ввода-вывода 161

2.3 Потоки, связанные с локальными файлами 163

2.3.1 Создание потоков, связанных с локальными файлами 164

2.3.2 Запись данных в поток и чтение их из потока 166

2.3.3 Закрытие потоков 168

2.3.4 Принудительный сброс буферов 169

2.3.5 Приложение StreamDemo 169

2.4 Потоки в оперативной памяти 172

3 Работа с локальной файловой система 173

3.1 Работа с файлами и каталогами 174

3.2 Приложение DirList 175

3.3 Произвольный доступ к файлам 176

3.4 Просмотр локальной файловой системы 178

3.5 Приложение FileDialogDemo 180

Задания к лабораторной работе 180

Контрольные вопросы 180

Лабораторная работа № 8 181

Методические указания к лабораторной работе № 8 181

1 Сокеты 182

2 Протокол TCP/IP, адрес IP и класс InetAddress 183

3 Потоковые сокеты 184

3.1 Создание и использование канала передачи данных 185

3.2 Конструкторы и методы класса Socket 186

3.3 Пример использования потоковых сокетов 187

4 Датаграммные сокеты (несвязываемые датаграммы) 190

4.1 Конструкторы и методы класса DatagramSocket 191

4.2 Конструкторы и методы класса DatagramPacket 192

4.3 Пример использования датаграммных сокетов 193

5 Приложения ServerSocketApp и ClientSocketApp 196

Задания к лабораторной работе 198

Контрольные вопросы 198

Лабораторная работа № 9 199

Методические указания к лабораторной работе №9 199

1Универсальный адрес ресурсов URL 199

2 Класс java.net.URL в библиотеке классов Java 200

3 Использование класса java.net.URL 201

3.1 Чтение из потока класа InputStream, полученного от объекта класса URL 201

3.2 Получение содержимого файла, связанного с объектом класса URL 203

4 Соединение с помощью объекта класса URLConnection 205

5 Приложение Diagram 207

Задания к лабораторной работе 210

Контрольные вопросы 210

Лабораторная работа № 10 210

Методические указания к лабораторной работе №10 210

1 Как устроен сервлет 211

2 Вспомогательные классы 213

3 Запуск и настройка сервлетов 215

4 Сервлет example, принимающий параметры 217

5 Сервлет, обрабатывающий запросы на основе методов CET и POST 222

6 Сервлет MyselfInfo 225

Задания к лабораторной работе 225

Контрольные вопросы 225

Лабораторная работа № 11 226

Методические указания к лабораторной работе №11 226

1 Написание апплетов, сервлетов и приложений JBDC 227

1.1 Соединение с базой данных 227

1.2 Применение интерфейса DatabaseMetaData 228

1.3 Посылка статичных SQL-запросов 229

1.4 Посылка параметризированных и частовыполняемых SQL-запросов 230

1.5 Выборка результатов 232

1.6 Применение интерфейса ResultSetMetaData 234

1.7 Доступ к хранимым функциям и процедурам 236

1.8 Применение выходных параметров 237

2 Обработка исключений JDBC 238

3 Отладка приложений JDBC 243

4 Сервлет, работающий с информацией из базы данных 244

Задания к лабораторной работе 247

Контрольные вопросы 247

Приложение 1. JAVA-файл простейшего апплета и HTML-документ со ссылкой на него 248

Приложение 2. JAVA-файл апплета, принимающего параметры, и