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 – единственный в своем роде продукт, позволяющий автоматизировать работу над созданием...
Март 2017 (1)
Февраль 2017 (3)
Январь 2017 (1)
Август 2016 (1)
Май 2016 (2)
Ноябрь 2015 (1)

Карта сайта: 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

Друзья сайта

Хотите продать свой сайт?
- Мы быстро и удобно для Вас сможем его купить:
  • Заявка на продажу сайта
  • Раcсматриваем цены на каждый сайт в индивидуальном порядке.

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

    Боб Хейз:

    "Пятнадцать лет назад компании конкурировали друг с другом в цене. Сейчас - это качество. Завтра - это дизайн."

    Опрос

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

    Internet Explorer
    Google Chrome
    Mozilla Firefox
    Netscape Navigator
    Maxthon Browser
    Opera
    Mozilla Suite
    SeaMonkey
    K-Meleon
    Safari
    Amaya
    Avant Browser
    SlimBrowser
    Другой...