Как создать группу радиокнопок
Чтобы организовать группу радиокнопок, надо сначала сформировать объект класса 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 j ava.awt.event.*; class SimpleComp extends Frame{ SimpleComp(String s){ super(s); setLayout(null); Font f = new Font("Serif", Font.BOLD, 15); setFont(f); Label 11 = new Label("Выберите товар:", Labe1.CENTER); l1.setBoundsdO, 50, 120, 30); add(11); Label 12 = new Label("Выберите способ оплаты:"); l2.setBounds(160, 50, 200, 30); add(12); Checkbox chl = new Checkbox("Книги"); chl.setBounds(20, 90, 100, 30); add(chl); 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 chgl = new Checkbox("Почтовым переводом", grp,-true); chgl.setBounds{170, 90, 200, 30); add(chgl); Checkbox chg2 = new Checkbox{"Кредитной картой", grp, false); chg2.setBounds(170, 120, 200, 30); add(chg2); Button b1 = new Button("Продолжить"); bl.setBounds(30, 220, 100, 30); add(bl)); Button b2 = new Button("Отменить"); b2.setBounds(140, 220, 100, 30); add(b2); Button b3 = new Button("Выйти"); 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.