48248 (597388)

Файл №597388 48248 (Программирование графики и обработка событий)48248 (597388)2016-07-30СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла

Факультет "Информатика и системы управления"

Методические указания к лабораторной работе

по курсу "Распределенные системы обработки информации"

Программирование графики и обработка событий

Москва 2004 г.

Оглавление

Цель работы 3

Задание для домашней подготовки 3

Задания к лабораторной работе 3

Задание 1 3

Задание 2 3

Содержание отчета 3

Контрольные вопросы. 4

Литература. 5

Приложение 1. Спецификация класса Calc. 6

Приложение 2. Иерархия классов AWT. 9

Приложение 3. Основные компоненты. 10

Компонент Label 10

Компонент Button 10

Компонент Checkbox 11

Класс CheckboxGroup 11

Компонент Choice 12

Компонент TextField 13

Контейнер Framе 14

Приложение 4. Менеджеры размещения. 16

Менеджер абсолютного размещения 16

Менеджер FlowLayout 18

Менеджер BorderLayout 18

Менеджер GridLayout 19

Менеджер CardLayout 20

Менеджер GridBagLayout 21

Приложение 5. Обработка событий. 25



Цель работы

  1. Познакомиться с библиотекой java.awt.

  2. Научится обрабатывать события.

  3. Освоить работу с управляющими компонентами и менеджерами размещения.

  4. Применить полученные знания на практике

Задание для домашней подготовки

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

Задания к лабораторной работе

Задание 1

Написать программу обработки щелчков на любую из трех кнопок, расположенных на панели. Каждый раз, когда пользователь щелкает мышью на какой-нибудь из трех кнопок, должен изменяться цвет панели (желтый, синий, красный).

Задание 2

  • Написать программу–калькулятор, реализующую графический интерфейс.

Содержание отчета

Отчет должен содержать:

  1. Постановку задачи, решаемой отлаженной программой.

  2. Руководство пользователя отлаженной программы, содержащее описание интерфейсов всех функций программы.

  3. Листинг программы с необходимыми комментариями.


Контрольные вопросы

        1. Почему в программе необходимо записать обработчик события закрытия окна? Как закрыть окно в случае, если программа запущена без этого обработчика?

        2. Какие менеджеры размещения компонентов вы знаете? В чем особенность каждого из них?

        3. Измените программу так, чтобы метод getRez() вызывался при:

          1. вводе текста в одно из текстовых полей

          2. изменении состояния флажка (переключателей)

          3. выборе одного из пунктов выпадающего списка

        4. Как изменится работа программы, если внутри блока switch(){} не записывать операторы break.

        5. Назовите два способа, которыми можно задать заголовок (title) окна.


Литература

Официальные источники:

  1. Кен Арнольд, Джеймс Гослинг, Дэвид Холмс. Язык программирования Java™.

  2. Официальный сайт Java — http://java.sun.com/ (есть раздел на русском языке с учебником).

  3. Java™ 2 SDK, Standard Edition Documentation — http://java.sun.com/products/jdk/1.5/index.html.

  4. Джеймс Гослинг, Билл Джой, Гай Стил. Спецификация языка Java (The Java Language Specification — http://www.javasoft.com/docs/books/jls/). Перевод на русский язык — http://www.uni-vologda.ac.ru/java/jls/index.html

  5. Официальный сайт проекта Eclipse — http://www.eclipse.org/.

Другое:

  1. Дмитрий Рамодин. Начинаем программировать на языке Java.

  2. Николай Смирнов. Java 2: Учебное пособие.

  3. Картузов А. В. Программирование на языке Java.

  4. Вязовик Н.А. Программирование на Java.

  5. Алексей Литвинюк. Введение в интегрированную среду разработки Eclipse — http://lib.juga.ru/article/articleview/174/1/69/.


Приложение 1. Спецификация класса Calc.

import java.awt.*; //подключение пакета с классами графических компонентов

import java.awt.event.*; // подключение пакета с интерфейсами – “слушателями”

class Calc extends Frame implements ActionListener

//наследуем класс Frame (окно) и интерфейс “слушателя” события нажатия кнопки

{

TextField t1=new TextField(8); //размер поля – 8 символов

//… другие текстовые поля

Label l1=new Label("(double)"); //метка по умолчанию содержит текст «(double)»

//… другие метки

Button b = new Button("Получить результат"); //кнопка

Checkbox cb=new Checkbox("+20%");//флажок с названием

Choice ch;//выпадающий список

public Calc(){//конструктор класса

super();

setSize(400,200);//размер окна

ch = new Choice();//конструктор выпадающего списка

ch.addItem("+");//добавляем пункты списка

//… другие пункты списка

setLayout(new FlowLayout()); //назначаем менеджер размещения компонентов (компоновщик)

add(l1);//выводим созданные компоненты на экран

add(t1);

add(ch);

//… и другие

addWindowListener(new WindowAdapter(){ //добавляем обработчик кнопки закрытия окна

public void windowClosing(WindowEvent e){

dispose(); System.exit(0);

}

}

);

b.addActionListener(this);//добавляем обработчик нажатия на кнопку

show();//делает окно видимым

}//конец конструктора

public void getRez(){//метод, вычисляющий результат

double x, //значение из первого текстового поля

Rez=0; //результат

//… вторая переменная – значение второго текстового поля

try{

x=new Double(t1.getText()).doubleValue();//извлечение числа из первого текстового поля

//…

switch(ch.getSelectedIndex()){//какой пункт выпадающего списка выбран? (номер)

case 0: Rez = x + /*вторая переменная*/; break;

case 1: //…

//… остальные операторы

};

if (cb.getState()) Rez*=1.2;//если флажок нажат, умножаем результат на 1.2

//записываем текст в поле (метку) результата с помощью метода setText(String.valueOf(Rez));

} //окончание блока try

catch(Exception ex){

String s=new String(ex.getMessage());

//записываем текст в поле (метку) сообщения об ощибке с помощью метода setText("Ошибка "+s);

}// окончание блока catch

}// окончание метода getRez()

public void actionPerformed(ActionEvent e){getRez();}//реализация метода actionPerformed

//(метод вызывается нажатием на кнопку b), см. выше

public static void main(String []a){Calc clc=new Calc();} //создаем только экземпляр класса Calc и все.

} //окончание класса Calc


Приложение 2. Иерархия классов AWT

На рис. 1 показана иерархия основных классов AWT. Основу ее составляют готовые компоненты: Button, Canvas, Checkbox, Choice, Container, Label, List, Scrollbar, TextArea, TextField, Menubar, Menu, PopupMenu, Menultem, CheckboxMenuItem. Если этого набора не хватает, то от класса Canvas можно породить собственные "тяжелые" компоненты, а от класса Component — "легкие" компоненты.

Основные контейнеры — это классы Panel, ScrollPane, Window, Frame, Dialog, FileDialog. Свои "тяжелые" контейнеры можно породить от класса Panel, а "легкие" — от класса Сontainer.

На рис. 1 также показаны и начальные классы иерархии библиотеки Swing — классы JComponent, JWindow, JFrame, JDialog, JApplet.

Рис. 1 Иерархия основных классов AWT


Приложение 3. Основные компоненты


Компонент Label

Компонент Label — это просто строка текста, оформленная как графический компонент для размещения в контейнере. Текст можно поменять только методом доступа setText(string text), но не вводом пользователя с клавиатуры или с помощью мыши.

Создается объект этого класса одним из трех конструкторов:

  • Label () — пустой объект без текста;

  • Label (string text) — объект с текстом text, который прижимается клевому краю компонента;

  • Label (String text, int alignment) — объект с текстом text и определенным размещением в компоненте текста, задаваемого одной из трех констант: CENTER, LEFT, RIGHT.

Размещение можно изменить методом доступа setAlignment(int alignment).

Остальные методы позволяют получить текст getText() и размещение getAlignment ().

События

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

Компонент Button

Компонент Button — это кнопка стандартного для данной графической системы вида с надписью, умеющая реагировать на щелчок кнопки мыши — при нажатии она "вдавливается" в плоскость контейнера, при отпускании — становится "выпуклой".

Два конструктора Button () и Button (String label) создают кнопку без надписи и с надписью label соответственно.

Методы доступа getLabel() и setLabel (String label) позволяют получить и изменить надпись на кнопке.

Главная функция кнопки — реагировать на щелчки мыши, и прочие методы класса обрабатывают эти действия.

События

Кроме событий класса Component: ComponentEvent, FocusEvent, KeyEvent, MouseEvent, при воздействии на кнопку происходит событие ActionEvent.

Компонент Checkbox

Компонент Checkbox — это надпись справа от небольшого квадратика, в котором в некоторых графических системах появляется галочка после щелчка кнопкой мыши — компонент переходит в состояние 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 происходят события класса Component: ComponentEvent, FocusEvent, KeyEvent, MouseEvent, а при изменении состояния кнопки возникает событие ItemEvent.

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

Класс 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.

Компонент Choice

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

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

Затем, методом add (String text), в список добавляются новые пункты с текстом text. Они располагаются в порядке написания методов add() и нумеруются от нуля.

Вставить новый пункт в нужное место можно методом

Характеристики

Тип файла
Документ
Размер
5,68 Mb
Тип материала
Учебное заведение
Неизвестно

Тип файла документ

Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.

Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.

Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.

Список файлов книги

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6799
Авторов
на СтудИзбе
278
Средний доход
с одного платного файла
Обучение Подробнее