- •Оглавление
- •Предисловие
- •Введение
- •Глава 1. Средства разработки приложений
- •1.1. Системные требования
- •1.2. Введение в NetBeans
- •1.3. Установка NetBeans
- •1.4. Первый запуск NetBeans
- •1.5. Интерфейс пользователя
- •1.6. Настройки среды
- •1.7. Создание проекта
- •Глава 2. Язык программирования Java
- •2.1. Первое приложение
- •2.2. Метод main
- •2.3. Основные понятия языка Java
- •2.3.1. Переменные и константы
- •2.4. Примитивные типы данных
- •2.4.1. Целые и символьные типы(byte, short, char, int, long)
- •2.4.2. Логический тип Boolean
- •2.4.3. Вещественные типы (float и double)
- •2.5. Ссылочные типы
- •2.6. Выражения и операторы
- •2.6.1. Логические операторы
- •2.6.2. Целочисленные битовые операторы
- •2.6.3. Арифметические операторы
- •2.6.4. Приоритеты выполнения операторов
- •2.6.5. Преобразование типов
- •2.6.6. Оболочечные классы
- •2.7. Класс Math
- •2.8. Сложные типы данных и строки
- •2.8.1. Массивы
- •2.8.2. Строки
- •2.9. Управляющие конструкции
- •2.9.1. Составной оператор
- •2.9.2. Условный оператор if
- •2.9.3. Оператор выбора
- •2.9.4. Операторы цикла
- •2.9.5. Операторы перехода
- •Глава 3. Введение в ООП
- •3.1. Основные принципы ООП
- •3.2. Состав структура и основные свойства классов
- •3.2.1. Описание полей класса
- •3.2.2. Оператор new
- •3.2.3. Описание методов
- •3.2.4. Модификаторы
- •3.2.5. Конструкторы
- •Совмещение методов
- •Глава 4. Рефакторинг
- •Глава 5. Ввод и вывод в Java
- •Глава 6. Графический интерфейс пользователя GUI
- •6.1. Компоненты и контейнеры
- •6.2. Встроенные пакеты GUI классов на основе библиотеки awt
- •6.2.1. Метка Label
- •6.2.2. Кнопка Button
- •6.2.3. Кнопка выбора CheckBox
- •6.2.4. Радио-кнопка Radiobutton
- •6.2.5. Поле ввода TextField
- •6.2.6. Поле ввода TextArea
- •6.3. Использование визуального редактора для проектирования ГИП
- •6.4. Графика в Java
- •6.5. Обработка событий
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);
