Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Бишоп Д. -> "Эффективная робота Java 2" -> 166

Эффективная робота Java 2 - Бишоп Д.

Бишоп Д. Эффективная робота Java 2 — Спб.: Питер, 2002. — 592 c.
ISBN 966-552-107-1
Скачать (прямая ссылка): effektivnayarabotajava2002.djvu
Предыдущая << 1 .. 160 161 162 163 164 165 < 166 > 167 168 169 170 171 172 .. 259 >> Следующая

if (picked == colourCheokti]) {
checkBoxPicked — i;
}
)
Метод асtionPerformed отличается от метода, определенного в предыдущей программе, только тем, что в процессе выполнения реагирует на нажатие кнопки Начертить. Теперь перейдем третьему этапу программы.
Отображение флагов
У нас есть класс для черчения флага, состоящего из трех горизонтальных полос. Метод, который создает фрейм, и его детали выглядят следующим образом:
public static void makeFlag (F?agCanvas canvas) {
Frame f = new Frame E);
f.add(canvas);
f.setTitle(canvas.country);
f.setSize<300,200);
f.setLocation(200,200);
f.setVisible(true);
f.addWindowListener(new WindowAdapterП ( public void windowClosing(WindowEvent e) (
e.ge tWindow().di spose() ;
}
});
378
Глава 11. Управление событиями
Черчение флага с вертикальными полосами тоже не является проблемой. Но чтобы не усложнять метод makeFlag. определим все три варианта дизайна как объекты, наследующие класс FlagCanvas, которые будем передавать этому методу в качестве параметров. Если в коде имеются строки
class FlagCanvas extends Canvas
class FlagCanvasVerti extends FlagCanvas
class FlagCanvasMotif extends FlagCanvas
то любой объект любого из этих трех классов будет доступен методу makeFlag.
Единственным еще не применявшимся нюансом фактического процесса черчения является процесс создания звезд в изображении. Для их вычерчивания мы будем использовать предварительно инициализированные массивы точек, которые можно передать методу fillPolygon или drawPolygon, определенным в классе Graphics.
Программа
Теперь* после рассмотрения деталей, мы приводим полный текст программы.
import j ava * awt- *; import java.awt,event.*;
public class FlagMakerGUI extends Frame
implements ActionListener, ItemListener {
/* Программа 4Разработчик флагов" Автор — Дж.М. Бишоп, май 2000 г,
*= = =^s=^ = = = ^ = =:=l=i = =
*
* Представляет простой GUI для выбора одного из трех
* стилей флага, плюс три изображения и семь цветов
* для каждой вертикальной или горизонтальной полосы.
*
* Демонстрирует импользовзние наследования и компонентов GUI/ в частности
* раскрывающихся списков и кнопок выбора.
V
static final int none = 0, circle = 1, star - 2, starGfDavid - 3;
static final int stripes = 0, bars = 1, motif = 2;
static final Color listedCoiours [] = {Color.red, Color.bine.
Color.white. Color.black, Color.green,
Color .orange, Color * yellow}
// Переменные GUI і
Che с kboxGroup
Checkbox EI
Choice
Choice
Choice
TextField
Button
flagFarts; colourCheck -colourChoice; flagChoice; motifChoice; nameField; drawButton;
new CheckboxL4];
public FlagMakerGUI() {
// Размещение элементов GUI.
/f ************************
setLayout (new BorderLayout());
Пракггикум 5, Разработчик флагов
379
Panel intro -= new Panel ();
intro.add(new Label("Разработка флага”)}; add("North”, intro\;
Panel middle === new Panel();
middle.setLayout(new FIowLayout(}} ; flagFarts = new CheckboxGroupf); for (int i=Q; i<3; i++J
colourCheck[i] — new Checkbox("Цвет w+(i+1)ri==l, flagParts);
colourCheckt3j = new Checkbox("Цвет изображения", false, flagFarts); for (int i=0; i<4; i++> (
colourCheck[i].addltemListener(this);
middle.add(colourChecktіJ);
¦
)
colourChoice = new Choice () ;
colourChoice.addltem t°Красный"); colourChoice.addItern("Голубой"); colourChoice.addltem("Белый"); colourChoice.addltem ( "Черный") ; colourChoice. addl tern (" Зеленый'1); colourChoice.addltem("Оранжевый"); colourChoice.addltem("Желтый"); colourChoice.addltemListener(this); middle-add(colourChoice); flagChoice - new Choice ();
flagChoice.addltem("Гориз. полосы");
flagChoice.addltem("Верт. полосы"); *
f lagChoice . addltem t”Гор. полосы с изображением'1) ; flagChoice .addltemListener (this) ; middle,add(flagChoice}г motifChoice — new Choice ();
motifChoice.addltem("без изображения"); moti’fChoice»addltem [ "Круг"}; motifChoice* addltem("Звезда"); motifChoice.addltem("Звезда Давида"); motifChoice.addltemListener(this); middle.add(motifChoice}; nameField - new TextFieldE" Флаг ",20);
nameField,addActionListener(this) ; middle*add (nameField) ; drawButton — new Button("Начертитьи) ; drawButton .addAct-ionljistener (this) ; middle.add(drawButton); add("Center",middle); setTitle("Разработчик флагов"); setVisible(true);
addwindowListener(new windowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
>) *
\
A
ff Переменные для обработчиков событий, int flagPicked = 0;
int checkBoxPicked =0; // цвет * 1
380
Глава 11. Управление событиями
int motifPicked = circle;
Color П colour = {Color,red, Color .white, Color.blue, Color.black} String name - т’ Флаг
public void actionPerformed (ActionEvent e) { if fe.getSource() == drawButton) { switch (flagPicked) {
Предыдущая << 1 .. 160 161 162 163 164 165 < 166 > 167 168 169 170 171 172 .. 259 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.