Читаем Java 7 полностью

Компонент Checkbox — это кнопка с двумя состояниями. Графически она выглядит как надпись справа от небольшого квадратика, в котором в некоторых графических системах появляется галочка после щелчка кнопкой мыши — компонент переходит в состояние (state) on. После следующего щелчка галочка пропадает — это состояние off. В других графических системах состояние on отмечается "вдавливанием" квадратика. В компоненте Checkbox состояния on/off отмечаются логическими значениями true/false соответственно.

Три конструктора, Checkbox(), Checkbox(String label), Checkbox(String label, boolean state), создают компонент без надписи, с надписью label в состоянии off и в заданном состоянии state соответственно.

Методы доступа getLabel(), setLabel(String label), getState(), setState(boolean state) возвращают и изменяют эти параметры компонента.

Компоненты Checkbox удобны для быстрого и наглядного выбора из списка, целиком расположенного на экране, как показано на рис. 10.1. Там же продемонстрирована ситуация, в которой нужно выбрать только один пункт из нескольких. В таких ситуациях образуется группа так называемых радиокнопок (radio buttons). Они помечаются обычно кружком или ромбиком, а не квадратиком, выбор обозначается жирной точкой в кружке или "вдавливанием" ромбика.

События

В классе Checkbox происходят события класса Component: ComponentEvent, FocusEvent, KeyEvent, MouseEvent, а при изменении состояния кнопки возникает событие ItemEvent.

Класс CheckboxGroup

В библиотеке AWT радиокнопки не образуют отдельный компонент. Вместо этого несколько компонентов Checkbox объединяются в группу с помощью объекта класса

CheckboxGroup.

Класс CheckboxGroup очень мал, поскольку его задача — просто дать общее имя всем объектам Checkbox, образующим одну группу. В него входит один конструктор по умолчанию CheckboxGroup () и два метода доступа:

□ getSelectedCheckbox (), возвращающий выбранный объект Checkbox;

□ setSelectedCheckbox(Checkbox box), задающий выбор.

Как создать группу радиокнопок

Чтобы организовать группу радиокнопок, надо сначала сформировать объект класса CheckboxGroup, а затем создавать кнопки конструкторами

Checkbox(String label, CheckboxGroup group, boolean state);

Checkbox(String label, boolean state, CheckboxGroup group);

Эти конструкторы идентичны, просто при записи конструктора можно не думать о порядке следования его параметров.

Только одна радиокнопка в группе может иметь состояние state == true.

Пора привести пример. В листинге 10.1 представлена программа, помещающая в контейнер Frame две метки Label сверху, под ними слева — три объекта Checkbox, справа — группу радиокнопок. Внизу — три кнопки Button. Результат выполнения программы показан на рис. 10.1.

Листинг 10.1. Размещение компонентов

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

class SimpleComp extends Frame{

SimpleComp(String s){ super(s); setLayout(null);

Font f = new Font("Serif", Font.BOLD, 15); setFont(f);

Label l1 = new Label("Выберите товар:", Label.CENTER); l1.setBounds(10, 50, 120, 30); add(l1);

Label l2 = new Label("Выберите способ оплаты:"); l2.setBounds(160, 50, 200, 30); add(l2);

Checkbox ch1 = new CheckboxCR^™"); ch1.setBounds(20, 90, 100, 30); add(ch1);

Checkbox ch2 = new Checkbox("Диски"); ch2.setBounds(20, 120, 100, 30); add(ch2);

Checkbox ch3 = new Checkbox("Игрушки"); ch3.setBounds(20, 150, 100, 30); add(ch3);

CheckboxGroup grp = new CheckboxGroup();

Checkbox chg1 = new Checkbox("Почтовым переводом", grp, true); chg1.setBounds(170, 90, 200, 30); add(chg1);

Checkbox chg2 = new Checkbox("Кредитной картой", grp, false); chg2.setBounds(170, 120, 200, 30); add(chg2);

Button b1 = new Button("Продолжить"); b1.setBounds( 30, 220, 100, 30); add(b1);

Button b2 = new Button("Отменить");

b2.setBounds(140, 220, 100, 30); add(b2);

Button b3 = new Button^^M™"); b3.setBounds(250, 220, 100, 30); add(b3);

setSize(400, 300); setVisible(true);

}

public static void main(String[] args){

Frame f = new SimpleComp(" Простые компоненты"); f.addWindowListener(new WindowAdapter(){

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

}

});

}

}

Рис. 10.1. Простые компоненты

Заметьте, что каждый создаваемый компонент следует заносить в контейнер, в данном случае Frame, методом add (). Левый верхний угол компонента помещается в точку контейнера с координатами, указанными первыми двумя аргументами метода setBounds (). Размер компонента задается последними двумя параметрами этого метода.

Раскрывающийся список Choice

Если нет необходимости отображать весь список на экране, то вместо группы радиокнопок можно создать раскрывающийся список объект класса Choice.

Компонент Choice — это раскрывающийся список, один, выбранный, пункт (item) которого виден в поле, а другие появляются при щелчке кнопкой мыши на небольшой кнопке справа от поля компонента.

Вначале конструктором Choice () создается пустой список.

Перейти на страницу:

Все книги серии В подлиннике

Java 7
Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др. Дано подробное изложение последней версии сервлетов, технологии JSP и библиотек тегов JSTL. Около двухсот законченных программ иллюстрируют рассмотренные приемы программирования. Приведена подробная справочная информация о классах и методах Core Java API.

Ильдар Шаукатович Хабибуллин

Программирование, программы, базы данных

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных