- •Краткая историческая справка.
- •Преимущества языка Java.
- •Недостатки java:
- •Лекция 2. Этапы разработки java-приложений. Этапы разработки java-приложений.
- •Установка jdk.
- •Инсталляция исходных кодов библиотек
- •Инсталляция пакета документации.
- •Тестирование правильности установки и создание простейшей программы
- •Визуальные среды программирования.
- •Лекция 3. Переменные и типы данных. Переменные и типы данных.
- •Подробности о примитивных типах.
- •Лекция 4. Операторы и функции. Операторы и функции.
- •Операторы ветвлений и циклов.
- •Оператор цикла while.
- •Оператор цикла for.
- •Лекция 5. Объектно ориентированное программирование Объектно ориентированное программирование.
- •Определение объекта.
- •Инкапсуляция.
- •Наследование.
- •Полиморфизм (перегрузка).
- •Пример ооп – программы.
- •Отличие перегрузки функций от переопределения.
- •Отличие классов от интерфейсов.
- •Лекция 6. Массивы и строки. Массивы и строки.
- •Многомерные массивы.
- •Приведение типов и динамические массивы.
- •Строки в java.
- •Лекция 7. Организация ввода-вывода данных Организация ввода-вывода данных.
- •Функции стандартной библиотеки ввода/вывода.
- •Новая библиотека ввода/вывода.
- •Классы потокового ввода/вывода из пакета java.Io.
- •Лекция 8. Обработка исключений. Обработка исключений.
- •Классификация исключений.
- •Перехват исключений блоками try/catch.
- •Самостоятельное выбрасывание исключений.
- •Разработка собственных классов исключений.
- •Лекция 9. Потоки. Потоки.
- •1. Cпециальный класс Thread.
- •2. Реализация интерфейса Runnable.
- •Выбор между использованием класса Thread и интерфейса Runnable.
- •Синхронизация потоков с помощью оператора synchronized.
- •Синхронизация потоков с помощью семафоров.
- •Лекция 10. Подключаемые библиотеки java. Подключаемые библиотеки java.
- •Библиотека awt
- •Внутреннее устройство системы обработки событий awt.
- •Библиотека Swing.
Библиотека awt
Обратите внимание, что большинство рабочих классов, которые непосредственно используются для построения пользовательского интерфейса наследуются от класса Component. Сам класс Component абстрактный, кроме того его конструктор защищенный (protected), поэтому напрямую создать экземпляр этого класса нельзя, можно использовать только его подклассы. Далее для построения и отрисовки главного окна программы используется класс Container. Различные элементы управления вроде кнопок, линеек прокрутки и радиопереключателей наследуются напрямую от класса Component. Следовательно, в основе любого окна программы лежит класс Container, а в нем можно размещать различные панели и дочерние окна. Элементы управления размещаются непосредственно на панелях и в силу прямого наследования от класса Component имеют только базовый функционал. Исходя из схемы, наибольшее количество встроенного функционала и всяких настроечных полей, связанных с окнами, имеют классы Japplet, FileDialog, Jdialog и Jframe, поскольку они находятся в самом низу цепочки наследования и инкапсулируют в себе все поля и методы вышележащих классов.
Графическая подсистема, всякие гриды и выпадающие меню являются самостоятельными классами, наследуемыми непосредственно от класса Object со своим собственным индивидуальным набором функционала.
Классы Component и Container не имеют визуального отображения и всегда присутствуют в приложениях неявно, следовательно, для создания простейшего приложения с графическим интерфейсом, нам достаточно создать класс окна (или любой из наследующих классов), передать ему минимальный набор параметров и вызвать встроенный метод отрисовки. Пример простейшего приложения:
import java.awt.*;
class MyWindow extends Frame {
public MyWindow () {
setSize(50, 150);
setVisible(true);
}
}
public class Gip {
public static void main(String[] args) {
Frame fr = new MyWindow();
}
}
Импортируем все файлы библиотеки, задаем начальные размеры и режим видимости, затем рисуем окно на экране. Появляется пустое стандартное окно без реакции на кнопки управления. В таком простейшем варианте приложение совершенно бесполезно и единственный способ его остановить – снять задачу, ну или перезапустить JVM, если отладка идет через визуальную среду.
Добавим возможность закрытия окна по кнопке:
import java.awt.*;
import java.awt.event.*; // добавили классы обработчиков событий
class MyWindow extends Frame {
public MyWindow () {
setSize(50, 150);
setVisible(true);
addWindowListener(new WindowAdapter () {
public void windowClosing(WindowEvent ev) { System.exit(0); }
}); // добавили функцию – обработчик нажатия на кнопку закрытия формы.
}
}
public class Gip {
public static void main(String[] args) {
Frame fr = new MyWindow();
}
}
Для этого в конструктор класса MyWindow мы добавим обработчик нажатия на кнопку закрытия формы. Теперь приложение почти полноценное, можно добавлять прочие элементы управления. Однако простое добавление элементов управления ничего не даст.
Для полноценного функционирования необходимо обеспечить реакцию приложения на различные события пользовательского интерфейса – нажатие кнопок мыши и клавиатуры, изменение фокуса элементов управления.
