Пять уроков по Java

        

Начинаем программировать на языке Java.


Часть 2

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


Часть 3

Вот мы и подошли вплотную к важнейшему этапу - созданию элементов ввода/вывода. Для этого язык Java предлагает целую гамму классов потоков ввода/вывода. Именно их мы и рассмотрим на этом занятии.

Для языков Си++ и Java характерно использование потоков ввода/вывода вместо файлов, как это делалось ранее. Поток ввода/вывода - это некоторый условный канал, по которому отсылаются и получаются данные. При этом совершенно не важно, что стоит за конкретным потоком: файл, блок памяти, экран и т. д. С точки зрения программиста, поток представляет собой ленточный транспортер, на который можно последовательно помещать куски данных, а лента доставит их по назначению. Остальные детали реализации не важны. Такая концепция помогает унифицировать методы работы со всеми устройствами ввода/вывода, сводя все к методам открытия потока, его закрытия, чтения данных из потока и запись данных в него. Конечно же, существуют исключения, но в целом разработчики языка Java старались соблюдать условия унифицированного интерфейса управления потоком. Во всю эту концепцию не вписываются лишь два класса: File и FileDescriptor. Первый осуществляет системные операции, как-то: создание, удаление, переименование файлов, и часто служит промежуточным звеном при использовании потоков. А вот второй, FileDescriptor, - это совсем отдельный случай. Он хранит три дескриптора стандартных файловых потоков (ввода, вывода и сообщений об ошибке) и содержит средства, позволяющие проверить правильность любого дескриптора файла.




Часть 4

Сегодня мы рассмотрим самый большой и, наверное, самый полезный раздел языка Java, связанный с реализацией пользовательского интерфейса. Для этого мы изучим базовые классы упаковки java.awt (Abstract Window Toolkit).

Итак, что же такое awt? Это набор классов Java, каждый из которых отвечает за реализацию функций и отображение того или иного элемента графического интерфейса пользователя (GUI). Практически все классы визуальных компонентов являются потомками абстрактного класса Component. Лишь визуальные элементы меню наследуются от другого класса - MenuComponent. Управляющие элементы представлены следующими классами: Button (кнопка), Checkbox (кнопка с независимой фиксацией), Choice (раскрывающийся список Windows), Label (строка), List (список выбора Windows) и Scrollbar (полоса прокрутки). Это достаточно простые классы, наследуемые от абстрактного класса Component напрямую.

Однако в составе java.awt имеются классы интерфейсных элементов, имеющие промежуточного предка. Хорошим примером тому является класс Panel для создания различных панелей. У него имеется промежуточный абстрактный класс-предок Container, служащий родоначальником многих классов-контейнеров, способных содержать в себе другие элементы интерфейса. От этого же класса наследуется класс окна Window, представляющий на экране простейшее окно без меню и рамки. У этого класса есть два часто используемых потомка: Dialog, название которого говорит само за себя, и Frame - стандартное окно Windows. Еще один промежуточный класс TextComponent порождает два полезнейших в работе класса - TextField (аналог строки ввода Windows) и многострочное окно текстового ввода TextArea. Особняком от всех элементов стоит класс Canvas. Его визуальное представление - пустой квадрат, на котором можно выполнять рисование и который может обрабатывать события нажатия кнопок мыши.

От своего предка Component все визуальные элементы перенимают общее для них всех поведение, связанное с их визуальной и функциональной сторонами. Вот список основных, выполняемых компонентами, функций и методов для их реализации:

изменение шрифта - методы getFont, setFont, getFontMetrics;

изменение цвета шрифта - методы setForeground(Color) и getForeground() - для установки и чтения цвета самого шрифта, а также setBackground(Color) и getBackground() для установки, а также чтения цвета фона, на котором отображается текст;

размер и позиция на экране - методы preferredSize() и minimumSize() сообщают менеджеру раскладок о предпочтительном и минимальном размерах компонента, соответственно;

отображение компонента - методы paint(), update() и repaint();

обработка сообщений - методы handleEvent(), action(), keyDown(), keyUp(), mouseDown(), mouseUp(), mouseDrag(), mouseMove(), mouseEnter() и mouseExit().






Часть 5

Как и было обещано, с этого занятия мы начинаем практиковаться в написании программ на языке Java. Иногда, правда, по ходу дела мы коснемся некоторых теоретических моментов, если это будет необходимо для понимания работы программы. На этом занятии мы будем разрабатывать аплет, который поможет понять механизм сообщений языка Java. Поэтому для начала рассмотрим основные события, происходящие в процессе работы Java-программ, и методы их перехвата.



Содержание раздела