Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
java / Java_Intro1_220509.pdf
Скачиваний:
251
Добавлен:
11.05.2015
Размер:
1.71 Mб
Скачать

6.2. Встроенные пакеты GUI классов на основе библиотеки awt

В предыдущем разделе мы познакомились с одним из компонентов библиотеки AWT – контейнером Window, окном, точнее с его наследником Frame.

Поскольку графический интерфейс представляет из себя набор большого количества компонентов, рассмотреть подробно, а тем более каждый из компонентов, в рамках данного пособия невозможно, рассмотрим несколько основных компонентов, таких как метка (label), кнопка (button), кнопка выбора (checkbox), радио-кнопка (radiobutton)

иполя ввода текста (textfield и textarea). Остальные компоненты, как

ирассматриваемые, так же унаследованы от класса Component, и имеют общие и схожие собственные методы обработки данных и событий, и не составят особого труда в самостоятельном изучении.

6.2.1. Метка Label

Метка – это простая графическая строка с текстом, ее нельзя редактировать напрямую, как простой текст.

Для того, что бы добавить метку в окно, нужно предварительно создать объект типа Label, который затем добавить в контейнер методом add().

Добавьте несколько строк в код класса FrameTest, данные строки в следующем листинге выделены жирным шрифтом.

import java.awt.*; import java.awt.event.*;

public class FrameTest extends Frame{ FrameTest(String str){

super(str);

setLayout(null);

setSize(500,400);

setVisible(true); addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent evt){ System.exit(0);

}

});

Label l1 = new Label("Моя метка"); l1.setBounds(25, 30, 100, 30); add(l1);

}

public static void main(String[] args) { new FrameTest("Мое первое окно");

}

}

Вы, наверное, заметили, как Eclipse подсказывает вам, какие аргументы должны быть установлены для вызываемого метода. Вызвав метод setBounds() средствами автокода, Eclipse выводит всплывающую

подсказку, в которой указаны аргументы, необходимые для указания, и их типы.

В результате, верхней части окна появится надпись «Моя метка»

Рис. 23. Результат добавления метки

В самом начале конструктора убираем менеджер размещения. Затем, после описания события закрытия окна создаем новый объект с именем l1 типа Label конструктором, который сразу добавляет текст в метку. Методом setBounds() задаем прямоугольные координаты расположения метки, и, после того, как объект-метка создан, добавляем его в контейнер методом add().

6.2.2. Кнопка Button

Кнопка – объект, который предназначен для выполнения некоторого одиночного набора действий. Реагирует на нажатие и отпускание левой кнопки мыши. Создается аналогично – добавим текст, предложенный в листинге в наш конструктор:

Button b1 = new Button("Моя кнопка"); b1.setBounds(45, 90, 100, 30);

add(b1);

В результате должна добавиться кнопка, изображенная на рис. 24.

Рис. 24.

6.2.3. Кнопка выбора CheckBox

Этот объект представляет собой квадратик с подписью, который, как и кнопка, реагирует на нажатие левой кнопки мыши.

Добавим в конструктор кнопку CheckBox:

Checkbox ch1 = new Checkbox("Кнопка Checkbox"); ch1.setBounds(45, 140, 150, 20);

add(ch1);

В результате, под кнопкой b1, должна появится кнопка Checkbox. Данный объект может находиться в двух состояниях – выбранном

и не выбранном. Получить данные о состоянии позволяет метод getState(), который возвращает значение типа boolean. Так же, программно, можно установить состояние методом setState(), указав в качестве параметра true или false.

6.2.4. Радио-кнопка Radiobutton

Объект, аналогичный объекту Checkbox, с небольшой разницей, заключающейся в том, что создаются они только в объекте типа CheckboxGroup и из всех радио-кнопок одной группы можно выбрать только одну радио-кнопку, при повторном выборе другой радио-кнопки, состояние предыдущей принимает значение false.

Добавим радио-кнопку под кнопку выбора:

CheckboxGroup chgrp = new CheckboxGroup();

Checkbox r1 = new Checkbox("Радиокнопка", chgrp, false); r1.setBounds(200, 140, 150, 20);

add(r1);

Отличие конструктора, заключается в том, что необходимо указать 3 параметра, а не только текст подписи. Второй параметр радио-кнопки – имя группы, к которой эта кнопка будет принадлежать, третий параметр – ее состояние. Запустив программу, и нажав левой кнопкой мыши на радио-кнопку, вы ее выберите и больше не сможете ее «отключить», т.е. изменить ее состояние на false. Поэтому в группе должно быть как минимум 2 радио-кнопки.

6.2.5. Поле ввода TextField

Поле ввода служит для приема программой строковой информации, например имени или пароля пользователя на входе.

Поместим поле ввода под кнопкой Checkbox. Добавьте в конструктор следующий код:

TextField tf1 = new TextField("",15); tf1.setBounds(45, 170, 150, 22);

add(tf1);

Важными методами для данного объекта являются методы setText() и getText(), устанавливающие и возвращающие (соответственно) текст находящийся в данный момент в поле.

Еще одна интересная и полезная особенность поля ввода – поле ввода пароля, когда вместо набираемых на клавиатуре символов, в поле отображаются эхо-символы, например звездочки или черточки. Установить поле в режим пароля можно методом setEchoChar(char). В качестве аргумента нужно указать символ, который будет использован в качестве маски. Добавьте строку tf1.setEchoChar((char)42); перед методом add(tf1), и посмотрите что получится. 42 – это десятичное число, соответствующее шестнадцатеричному числу 2А, которое в свою очередь соответствует ASCII символу «*». Можно было вместо конструкции (char)42 использовать просто запись '*' (обязательно в одинарных кавычках, т.к. двойные кавычки изображают строку, а не символ). Запустите программу и убедитесь что теперь поле маскирует ввод текста звездочками.

6.2.6. Поле ввода TextArea

Поле ввода TextArea – это прямоугольная область, предназначенная для ввода многострочного текста. Имеет несколько столбцов (ширина) и несколько строк (высота), а так же полосы прокрутки, наличие или отсутствие которых должно быть указано в конструкторе.

В завершение добавим поле ввода TextArea в самый низ нашего

окна:

TextArea ta1 = new TextArea("", 10, 10, SCROLLBARS_VERTICAL_ONLY); ta1.setBounds(45, 205, 410, 90);

add(ta1);

Соседние файлы в папке java