WebClub - Всероссийский Клуб Веб-разработчиков
WebClub.RU » Архив » Оконный инструментарий Java.

Оконный инструментарий Java.


Дата публикации: 17-03-2013

ОБЩИЕ ПОЛОЖЕНИЯ
Язык Java не мог бы претендовать на звание современного языка программирования, если бы не имел средств визуального представления, таких как окна, меню, кнопки, поля ввода и т.д. Действительно, кого сейчас удивишь вводом-выводом в текстовым режиме ДОС-окна! Но как "объять необъятное", "впрячь в одну упряжку коня и трепетную лань"!? - ведь у каждой компьютерной платформы свои представления о том, какой должен быть визуальный пользовательский интерфейс. Потому так и разнятся друг от друга интерфейсы Windows и Macintosh, Motif и ... что там у нас ещё есть?.. Но, слава Богу - кое-что общее у них есть, а именно - сам факт, что во всех этих интерфейсах есть окна, кнопки, поля ввода текста, меню... Потому и есть возможность сохранить переносимость Java-прилож ений - надо только уметь вызывать в каждой среде эти элементы интерфейса. Для этого в стандартном JDK есть AWT (Abstract Window Toolkit) - пакет классов, представляющих из себя элементы оконного интерфейса - те общие, "примитивные" элементы, которые есть во всех оконных системах. С помощью этих классов в той системе, где запущено Java-приложение "вызываются" соответствующие оконные элементы.



ИЗ ЧЕГО СТРОИТСЯ ГРАФИЧЕСКИЙ ИНТЕРФЕЙС (КОМПОНЕНТЫ И КОНТЕЙНЕРЫ)

В AWT визуальные объекты называются компонентами (все они являются наследниками класса Component), а группы объектов реализованы с помощью так называемых контейнеров (контейнер - это компонент, который может иметь "на себе" другие компоненты. Элементы, о тносящиеся к меню стоят особняком.
К числу примитивных компонент относятся:
· Button · TextField
· Checkbox · Dialog
· Label · Frame
· List · Panel
· ScrollBar · Window
· TextArea

Взаимодействие интерфейсных компонент с пользователем реализовано с помощью аппарата событий.

В AWT есть следующие классы:

Button - кнопка
Имеет два конструктора:
Button() - кнопка без метки (текста);
Button(String) - кнопка c заданным текстом;
Некоторые оригинальные методы:
String getLabel() - для получения текста метки;
void setLabel(String) - для установки текста метки.

Checkbox - переключатель да/нет
Имеет пять конструкторов:
Checkbox() - переключатель без всякой метки;
Checkbox(String) - переключатель с заданной меткой:
Checkbox(String, boolean) - переключатель с заданной меткой и заданным состоянием):
Checkbox(String, boolean, CheckboxGroup) - переключатель с заданными меткой, состоянием и принадлежностью к заданной группе):
Checkbox(String, CheckboxGroup, boolean) - аналогично предыдущему конструктору, только иной порядок следования параметров.
Некоторые оригинальные методы:
CheckboxGroup getCheckboxGroup() - получения ссылки на CheckboxGroup, которой в данный момент принадлежит данный переключатель;
void setCheckboxGroup(CheckboxGroup) - для отнесения данного переключателя к группе CheckboxGroup;
boolean getState() и void setState(boolean) - для получения и установки состояния переключателя.

Здесь следует упомянуть CheckboxGroup. Этот класс не представляет из себя визуальный объект и не является наследником Component (а наследует Object) и потому не входит в состав пакета AWT. Его назначение - сделать возможным создание т.н. радиокнопок - группы Checkbox'ов в которой только один Checkbox в данное время может быть в состоянии true.
Имеет один конструктор без параметров:
CheckboxGroup()
Некоторые оригинальные методы:
Checkbox getSelectedCheckbox() - возвращает Checkbox в данной группе, который в данный момент находится в состоянии true;
void setSelectedCheckbox(Checkbox) - устанавливает данный Checkbox в группе в состояние true;

Label - метка, простой текст
Имеет три конструктора:
Label() - создает "пустую" метку;
Label(String) - создает метку с заданным текстом;
Label(String) - создает метку с заданным текстом и заданным типом выравнивания (Label.RIGHT, Label.LEFT или Label.CENTER);
Некоторые оригинальные методы:
int getAlignment() - возвращает тип выравнивания текста;
void setAlignment(int ) - устанавливает заданное выравнивание текста;
String getText() - возвращает текст метки;
void setText(String) - устанавливает текст метки.

List - прокручиваемый список текстовых строк.
Имеет три конструктора:
List() - создает пустой список;
List(int) - создает пустой список c заданным количеством видимых строк;
List(int, boolean) - создает пустой список c заданным количеством видимых строк и устанавливает режим выборки нескольких строк (multipleMode) в true или false.
Номера строк начинаются с нуля.
Некоторые оригинальные методы:
void add(String) - добавляет к концу списка новую строку:
void add(String, int) - добавляет в указанную позицию списка новую строку:
void select(int) - выделяет строку с указанным номером;
String getSelectedItem() - возвращает выбранную строку;
String[] getSelectedItems() - возвращает массив из выбранных строк;
int getSelectedIndex() - возвращает номер выбранной строки;
int[] getSelectedIndexes() - возвращает массив из номеров выбранных строки;
void remove(int) - удаляет строку с указанным номером;
void removeAll() - очищает весь список.

Choice - выпадающий список.
Имеет один конструктор:
Choice() - создает пустой выпадающий список
Методы этого компонента в основном совпадают с методами компонента List.

TextField - однострочное поле ввода.
Имеет четыре конструктора:
TextField() - создает пустое поле ввода;
TextField(int) - создает пустое поле ввода указанной ширины (в символах).
Ширина символа берется средней для установленного в данный момент шрифта;
TextField(String) - создает поле ввода c указанным начальным текстом;
TextField(String, int) - создает поле ввода c указанным начальным текстом и указанной ширины (в символах);
Некоторые оригинальные методы:
void setEchoChar(char) - устанавливает для данного ввода "секретный" режим отображения (как для поля ввода пароля);
void setText(String) и String getText() - устанавливает и возвращает содержимое поля (наследуется из суперкласса TextComponent - этот класс также определяет методы работы с выделенным текстом).

TextArea - многострочное текстовое поле.
Имеет пять конструкторов:
TextArea() - создает пустое текстовое поле;
TextArea(int, int) - создает пустое текстовое поле с указанным количеством строк и указанной ширины (в символах) - именно в таком порядке!;
TextArea(String) - создает текстовое поле c указанным текстом;
TextArea(String, int, int) - создает текстовое поле c указанным текстом и с указанным количеством строк и указанной ширины (в символах);
TextArea(String, int, int, int) - создает текстовое поле c указанным текстом, указанным количеством строк, указанной ширины (в символах) и с указанными линейками прокрутки (SCROLLBARS_BOTH, SCROLLBARS_VERTICAL_ONLY, SCROLLBARS_HORIZONTAL_ONLY, SCROLLBARS_NONE);
Некоторые оригинальные методы:
void append(String) - добавляет указанный текст к концу имеющегося;
void insert(String, int) - вставляет указанный текст в указанную позицию (нумерация символов в тексте начинается с нуля!);
void replaceRange(String, int, int) - заменяет текст в указанном диапазоне на заданный текст;
void setText(String) и String getText() - устанавливает и возвращает содержимое поля (наследуется из суперкласса TextComponent - этот класс также
определяет методы работы с выделенным текстом).
int getRows() - возвращает количество рядов данного поля (но не количество строк текста!)
void setRows(int) - устанавливает количество рядов данного поля (высоту поля, но не количество строк текста!)

Frame - окно с заголовком, кнопками управления и рамкой. Наследуется от класса Window.
Имеет два конструктора:
Frame() - создает окно с пустым заголовком;
Frame(String) - создает окно с заданным заголовком;
Frame создается первоначально невидимым! Layout по умолчанию у Framе - BorderLayout.
Для того, чтобы окно реально появилось на экране, необходимо выполнить его метод void setVisible(boolean) с параметром true (наследуется из класса Component) и установить размеры одним из методов setSize или одним из методов setBounds; Некоторые оригинальные методы:
void setIconImage(Image) - устанавливает иконку для минимизированного состояния;
void setMenuBar(MenuBar) - помещает в окно указанный MenuBar;
void setResizable(boolean) - устанавливает (true) или удаляет (false) свойство
окна Resizable (возможность изменять его размеры);
void setCursor(Cursor) - устанавливает заданный указатель мыши (из имеющихся в
системе);

Dialog - диалоговое окно для пользовательского ввода. Имеет четыре конструктора:
Dialog(Frame) - создает диалоговое окно, владелец которого - указанный Frame;
Dialog(Frame, boolean) - создает диалоговое окно, владелец которого - указанный Frame и с указанной модальностью (модальным называется диалоговое окно, которое не разрешает переход на окно-владельца до тех пор, пока оно (диалоговое окно) не будет закрыто;
Dialog(Frame, String) - создает диалоговое окно c заданным заголовком и заданным владельцем -Frame'ом;
Dialog(Frame, String, boolean) - создает диалоговое окно c заданным заголовком, заданным владельцем -Frame'ом и с указанной модальностью;
Так же как и Frame, для того, чтобы появиться на экране, Dialog требует исполнения методов setVisible и setSize (или setBounds).

Panel - панель, простейший представитель класса Container, пустое пространство для помещения на него других компонент, в т.ч. и других панелей.
Имеет два конструктора:
Panel() - создает пустую панель; LayoutManager по умолчанию - FlowLayout;
Panel(LayoutManager) - создает пустую панель с заданным LayoutManager;
Оригинальных методов не имеет.
Этот класс имеет только одного, но очень важного наследника - Applet.

Applet - панель, имеющая свойство исполняемой программы. Предназначен(а) для помещения на Web-страницу.
Имеет конструктор:
Applet() - создает пустой апплет; LayoutManager по умолчанию - FlowLayout;
Некоторые важные методы:
URL getCodeBase() - возвращает адрес (URL - Universal Resource Locator) с которого он был загружен;
URL getDocumentBase() - возвращает адрес (URL) с которого была загружена страница, его содержащая;
AudioClip getAudioClip(URL) - возвращает указатель на объект-аудиоклип. Реально он после этого не проигрывается, для этого надо исполнить метод void play(URL);
Image getImage(URL) - возвращает указатель на объект-Image. Реально он после этого не рисуется, для этого надо исполнить метод void drawImage класса Graphics;
void init() - этот метод вызывается браузером, создавшим апплет, один раз в самом начале. Метод должен содержать весь тот код, который будет определять внешний вид апплета (создать все элементы интерфейса и разместить их) и его поведение при различных событиях.
void start() - этот метод вызывается браузером, создавшим апплет, первый раз после исполнения init(), а затем каждый раз, когда пользователь возвращается на страничку, содержащую апплет.
void stop() - этот метод вызывается браузером, создавшим апплет, каждый раз, когда пользователь покидает страничку, содержащую апплет, а также непосредственно перед разрушением апплета.
void destroy()- этот метод вызывается браузером, создавшим апплет, непосредственно перед разрушением апплета.
String getParameter(String) - возвращает параметр, имя которого задано параметром. Например:



при вызове метод getParameter("Color") возвратит строку "blue". Имя параметра нечувствительно к регистру, т.е. метод getParameter("сOLoR")также сработает. void resize(int, int) - изменяет размеры апплета.

МЕНЮ

Меню может быть создано только у оконных компонентов, а именно у Frame.
* Создание меню начинается с создания объектов, составляющих меню:
a) MenuItems (конечные пункты меню - те, что пользователь будет выбирать). Разновидность MenuItem - CheckboxMenuItem - пункт меню с переключателем;
b) Menu - главные пункты меню (типа File, Edit и Help)
c) MenuBar - полоска в верхней части окна, на которой располагаются главные пункты меню.
* Затем экземпляр класса MenuBar добавляется к окну методом Frame setMenuBar(MenuBar);
* К MenuBar добавляются главные пункты меню - метод класса MenuBar add(Menu);
* К каждому главному пункту меню добавляются конечные пункты меню - метод класса Menu add(MenuItem);
* К каждому конечному пункту меню добавляется необходимый ActionListener, который и будет обеспечивать исполнение необходимого кода - метод MenuItem addActionListener(ActionListener).


Андрей Дуглас 1998г.
Домен продается

Популярное

Не так давно в сети появился новый сервис, под названием Dead Man Zero. Этот сервис сделал...
Рынок социальных площадок уже давно стал стабильным. Несмотря на то, что время от времени...
Artisteer 4 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Апрель 2024 (1)
Октябрь 2018 (14)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)

Карта сайта: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41

Друзья сайта



Случайная цитата

Неизвестный автор:

"Как видно, совершенство достигается не тогда, когда уже нечего прибавить, но когда уже ничего нельзя отнять."

Опрос

Какой антивирус Вы используете?

Kaspersky Antivirus
NOD32
Norton Antivirus
Dr.Web
Panda
Аvast!
ClamWin
Другой...