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

152

cb.addltemListener(this); contentPane.add(cb) ;

// добавить текстовое поле в панель содержания jtf = new JTextField(15);

contentPane.add(jtf);

}

public void itemStateChangeddtemEvent ie) { JCheckBox cb = (JcheckBox)ie.getltem (); jtf.setText(cb.getText () ) ;

}

}

Вывод этого апплета представлен на рис. 69.

Рисунок 76 - Окно апплета JCheckBoxDemo

9.5.7Переключатели

Переключатели поддерживаются классом JRadioButton, который является конкретной реализацией класса AbstractButton. Некоторые из его конструкторов:

JRadioButton(Icon i)

JRadioButton(Icon z, boolean state)

JRadioButton(String s)

JRadioButton(String s, boolean state)

JRadioButton (String s, Icon i.)

JRadioButton(String s, Icon f, boolean state)

где используются параметры: i — изображение для кнопки; s — текст. Если state true, кнопка первоначально выбрана. Иначе — нет.

Переключатели должны быть объединены в группу, где в каждый момент может быть выбран только один элемент. Например, если пользователь щелкает по переключателю, который находится в группе, любой предварительно нажатый переключатель в этой группе автоматически сбрасывается. Чтобы создать группу кнопок, строится экземпляр класса ButtonGroup. Для этой цели вызывается его умалчиваемый конструктор. Элементы к группе кнопок добавляются с помощью следующего метода:

void add(AbstractButton ab)

Здесь ad — ссылка на кнопку, которая будет добавлена к группе.

153

Следующий пример иллюстрирует, как можно использовать переключатели. Создаются три переключателя и одно текстовое поле. Когда выбирается переключатель, его подпись отображается в текстовом поле. Сначала для объекта JAppiet создается панель содержания, и в качестве ее менеджера компоновки устанавливается поточное размещение. Далее, в панель содержания добавляются три радиокнопки. Затем определяется группа кнопок, в которую добавляются кнопки. Наконец, к панели содержания добавляется текстовое поле.

Выбор переключателя генерирует action-событие, которое обрабатывается методом actionPerf ormed (). Метод getActionCommand () получает подпись,

которая связывается с переключателем и использует ее для вывода в текстовое поле.

import java.awt.*; import j ava.awt.event.*; import javax.swing.*; /*

<applet code="JRadioButtonDemo" width=300 height=50> </applet>

*/

public class JRadioButtonDemo extends JAppiet implements ActionListener {

JTextField tf;

public void initO {

//получить панель содержания Container contentPane = getContentPane(); contentPane.setLayout(new FlowLayout());

//добавить переключатели в панель содержания JRadioButton Ы = new JRadioButton ("А") ; bl.addActionListener(this) ; contentPane.add(bl);

JRadioButton Ь2 = new JRadioButton("В") ; b2.addActionListener(this); contentPane.add(b2);

JRadioButton b3 = new JRadioButton("C"); b3.addActionListener(this); contentPane.add(b3);

//определить группу кнопок ButtonGroup bg = new ButtonGroup(); bg.add(bl);

bg.add(b2) ; bg.add(b3);

//создать текстовое поле и добавить его //в панель содержания

tf = new JTextField(5);

154

contentPane.add(tf);

}

public void actionPerformed(ActionEvent ae) { tf. setText (ae. GetActionCoiranand () ) ;

}

}

Вывод этого апплета представлен на рис. 70.

Рисунок 77 - Окно апплета JRadioButtonDemo

9.5.8Поля со списком

Swing обеспечивает комбинированное поле (combo box) — комбинацию текстового поля и раскрывающегося списка, через класс JComboBox, который расширяет JComponent. Комбинированное поле обычно отображает один вход (элемент) списка. Однако оно может также отображать и раскрывающийся список, который дает возможность пользователю выбирать различные входы. Вы также можете ввести (с клавиатуры) свое значение элемента списка в текстовое поле. Ниже показаны два конструктора JcomboBox:

JComboBox <)

JComboBox(Vector v)

Здесь v — вектор, который инициализирует комбинированное поле.

Элементы добавляются к списку выборов с помощью метода additem (), чья сигнатура имеет вид:

void addltem(Object dbj)

Здесь obj — объект, который будет добавлен к комбинированному полю.

Следующий пример содержит комбинированное поле и метку. На метке отображается пиктофамма. Комбинированное поле содержит элементы "France", "Germany", "Italy" и "Japan". Когда выбирается название страны, метка обновляется так, чтобы отобразить флажок этой страны.

import java.awt.*;

impo rt j ava.awt.event.*; import javax.swing.*;

/*

<applet code="JComboBoxDemo" width=300 height=100> </applet>

155

*/

public class JComboBoxDemo extends JApplet implements ItemListener {

JLabel jl;

Imagelcon france, germany, italy, japan;

public void init() {

//получить панель содержания Container contentPane = getContentPane(); contentPane.setLayout(new FlowLayout());

//создать комбинированный список

//и добавить его в панель JComboBox j с = new JComboBox(); jс.addltem("France"); jс.addltem("Germany"); jс.addltem("Italy"); jc.addltem("Japan"); jc.addltemListener(this);

content Pane.add(jс);

// создать метку

jl = new JLabel(new Imagelcon("franee.gif")); content Pane.add(j1);

}

public void itemStateChangedfltemEvent ie) { String s = (String)ie.getltemO;

jl.setlcontnew ImageIcon(s + ".gif"));

}

}

Вывод этого апплета представлен на рис. 71.

Рисунок 78 - Окно апплета JComboBoxDemo

9.5.9Панели со вкладками

156

Панель со вкладками (tabbed pane) — компонент, который появляется как группа папок в САВ-файле (file cabinet). Каждая папка имеет заголовок. Когда пользователь выбирает папку, ее содержимое становится видимым. Только одна из папок может быть выбрана одновременно. Панель со вкладками обычно используется для установки параметров конфигурации.

Панель со вкладками инкапсулирована классом JTabbedPane, который расширяет JComponent. Мы будем использовать его умолчиваемый конструктор. Вкладки определяются с помощью следующего метода:

void addTab(String str, Component camp)

Здесь str — заголовок вкладки; comp — компонент, который должен быть добавлен во вкладку. Как правило, добавляются объекты класса JPanel или его подклассов.

Общая процедура использования в апплете панели со вкладками:

Создать объект JtabbedPane.

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

Повторить шаг 2 для каждой вкладки.

Добавить панель со вкладками в панель содержания апплета.

Следующий пример иллюстрирует, как можно создать панель со вкладками. Первая вкладка названа Cities (Города) и содержит четыре кнопки с названиями городов. Вторая вкладка названа Colors (Цвета) и содержит три флажка, отображающих название цвета. Третья вкладка названа Flavors (аромат, привкус) и содержит одно комбинированное поле. Оно дает возможность пользователю выбрать одну из трех разновидностей аромата.

import javax.swing.*; /*

<applet code="JTabbedPaneDemo" width=400 height=100> </applet>

*/

public class JTabbedPaneDemo extends JApplet { public void init() {

JTabbedPane jtp = new JTabbedPane(); jtp.addTab("Cities", new CitiesPanel()); jtp.addTab("Colors", new ColorsPanel()); jtp.addTab("Flavors", new FlavorsPanel()); getContentPane () . add(jtp);

}

}

class CitiesPanel extends JPanel { public CitiesPanel() {

JButton bl = new JButton("New York"); add(bl);

JButton b2 = new JButton("London"); add(b2);

JButton b3 = new JButton("Hong Kong");

157

add(b3);

JButton b4 = new JButton("Tokyo"); add(b4);

}

}

class ColorsPanel extends JPanel { public ColorsPanel() {

JCheckBox cbl = new JCheckBox("Red"); add(cbl);

JCheckBox cb2 = new JCheckBox("Green"); add(cb2);

JCheckBox cb3 = new JCheckBox("Blue"); add(cb3);

}

}

class FlavorsPanel extends JPanel { public FlavorsPanel() {

JComboBox j cb = new JComboBox(); jcb.addltem("Vanilla"); jcb.addltemC'Chocolate") ; jcb.addltemC'Strawberry") ;

add(jcb) ;

}

}

Вывод этого апплета показан на рис. 72 — 74.

Рисунок 79 - Вкладка Cities окнаапплета JTabbedPaneDemo

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]