Основные понятия обработки событий Событие — это объект,

Скачать презентацию Основные понятия обработки событий Событие — это объект, Скачать презентацию Основные понятия обработки событий Событие — это объект,

lekciya_6_prodolghenie.ppt

  • Размер: 122.3 Кб
  • Автор:
  • Количество слайдов: 17

Описание презентации Основные понятия обработки событий Событие — это объект, по слайдам

Основные понятия обработки событий Событие - это объект, описывающий изменение состояния источника событий (нажатиеОсновные понятия обработки событий Событие — это объект, описывающий изменение состояния источника событий (нажатие клавиши, движение мыши, нажатие кнопки, изменение компонента …). Источник события — это объект (субъект), за которым ведется наблюдение, и извещающий о событии (кнопки, текстовые поля, списки). Слушатель (наблюдатель)событий — это объект, определяющий методы, которые следует вызывать субъекту, для того чтобы сообщить о своих изменениях. Каждому типу событий соответствует свой слушатель с определенным интерфейсом. Адаптер – это класс, в котором описан интерфейс определенного слушателя. Если слушатель называется XXXListener, то имя адаптера выглядит как XXXAdapter.

Классы событий Action. Event - событие, определяемое компонентом,  например нажатие кнопки; Component. EventКлассы событий Action. Event — событие, определяемое компонентом, например нажатие кнопки; Component. Event — генерируется, когда позиция, размер или видимость компонента изменяются; Container. Event — генерируется при добавлении или удалении элемента из контейнера; Focus. Event — генерируется при получении или потери фокуса ввода компонентом; Item. Event — событие выбора или отменены выбора элемента. Например, изменение состояния кнопки-флажка, выбор элемента меню или списка; Key. Event — событие ввода с клавиатуры; Mouse. Event — события мыши; Window. Event — события окна, как активация и свертывание.

Интерфейсы обработки событий Action. Listener - интерфейс обработки события Action. Event; Item. Listener -Интерфейсы обработки событий Action. Listener — интерфейс обработки события Action. Event; Item. Listener — интерфейс обработки события Item. Event; Key. Listener — интерфейс обработки события Key. Event; Mouse. Listener — интерфейс обработки события Mouse. Event, для нажатия/отжатия кнопок и входа/ухода курсора мыши с области компонента; Mouse. Motion. Listener — интерфейс обработки события Mouse. Event, для движение курсора мыши или перетаскивании мышью; Mouse. Wheel. Listener — интерфейс обработки события Mouse. Event, для прокрутки колеса мыши.

Порядок написания обработчиков 1. Определить класс (слушатель или адаптер),  который отвечает за обработкуПорядок написания обработчиков 1. Определить класс (слушатель или адаптер), который отвечает за обработку события. Этот класс должен наследовать интерфейс, отвечающий за обработку данного события. 2. Написать реализацию методов интерфейса. 3. Зарегистрировать слушателя в классе, где может происходить это событие.

Окно с кнопкой закрытия import java. awt. *;  import j ava. awt. event.Окно с кнопкой закрытия import java. awt. *; import j ava. awt. event. *; class Simple. Frame extends Frame{ Simple. Frame(String s){ super (s); //название окна set. Size(400, 150); set. Visible(true); /* добавление слушателя, Адаптер — это класс, который реализует интерфейс определенного слушателя */ add. Window. Listener(new Window. Adapter(){ public void window. Closing(Window. Event ev){ System. exit (0); } } ) ; } public static void main(String[] args){ new Simple. Frame(» Моя программа»); } } Swing

Обработка события ввода с клавиатуры import javax. swing. *; import java. awt. event. *;Обработка события ввода с клавиатуры import javax. swing. *; import java. awt. event. *; public class First. Events extends JFrame { First. Events() { super(«First. Events»); // название окна set. Default. Close. Operation(EXIT_ON_CLOSE); // при закрытии окна – выход add. Key. Listener(new Key. L()); // регистрируем слушателя ввода с клавиатуры set. Size(200, 200); // выводим окно на экран set. Visible(true); } public static void main(String[] args) { new First. Events(); } } // этот класс будет получать извещения о событиях клавиатуры class Key. L implements Key. Listener { public void key. Typed(Key. Event k) {// пользователь нажал и отпустил клавишу с печатным символом char ch =k. get. Key. Char(); System. out. println(ch); } public void key. Pressed(Key. Event k) {// нажатие клавиши int code =k. get. Key. Code(); if (code == Key. Event. VK_LEFT) System. out. println(“Стрелка влево”); } public void key. Released(Key. Event k) {// отпускание нажатой клавиши I int code =k. get. Key. Code(); f (code == Key. Event. VK_DOWN) System. out. println(“DOWN”); } } Swing

Пример диалогового окна import javax. swing. *; import java. awt. event. *; public classПример диалогового окна import javax. swing. *; import java. awt. event. *; public class Message. Dialogs extends JFrame { // этот значок выведем в одном из сообщений private Image. Icon icon = new Image. Icon(«question. gif»); public Message. Dialogs() { super(«Message. Dialogs»); set. Default. Close. Operation(EXIT_ON_CLOSE); // кнопки, после щелчков на которых выводятся сообщения JButton message 1 = new JButton(«2 параметра»); message 1. add. Action. Listener(new Action. Listener() { public void action. Performed(Action. Event e) { JOption. Pane. show. Message. Dialog( Message. Dialogs. this, «Привет! на HTML !»); } }); JButton message 2 = new JButton(«4 параметра»); message 2. add. Action. Listener(new Action. Listener() { public void action. Performed(Action. Event e) { JOption. Pane. show. Message. Dialog(Message. Dialogs. this, new String[] { «Сообщение может быть», «записано массивом!» }, «Свой заголовок», JOption. Pane. ERROR_MESSAGE); } }); JButton message 3 = new JButton(«5 параметров»); message 3. add. Action. Listener(new Action. Listener() { public void action. Performed(Action. Event e) { JOption. Pane. show. Message. Dialog(Message. Dialogs. this, «Настроено все что можно», «Свой заголовок», JOption. Pane. INFORMATION_MESSAGE, icon); } }); // выведем окно на экран JPanel contents = new JPanel(); contents. add(message 1); contents. add(message 2); contents. add(message 3); set. Content. Pane(contents); set. Size(400, 200); set. Visible(true); } public static void main(String[] args) { new Message. Dialogs(); } } Swing

Обработка событий от кнопок import javax. swing. *; import javax. swing. event. *; importОбработка событий от кнопок import javax. swing. *; import javax. swing. event. *; import java. awt. event. *; public class Button. Events extends JFrame { public Button. Events() { super(«Button. Events»); set. Default. Close. Operation( EXIT_ON_CLOSE ); // получаем панель содержимого Container c = get. Content. Pane(); JButton button = new JButton(«Нажмите меня!»); // создаем кнопку и помещаем ее на север окна c. add(button, «North»); info = new JText. Area(«Пока событий не было\n»); // поле для вывода сообщений о событиях c. add(new JScroll. Pane(info)); //Добавляем прокрутку // привязываем к нашей кнопке слушателей событий , слушатели описаны как внутренние классы button. add. Action. Listener(new Action. L()); // выводим окно на экран set. Size(400, 300); set. Visible(true); } JText. Area info; class Action. L implements Action. Listener { public void action. Performed(Action. Event e) { info. append(«Получено сообщение о нажатии кнопки! От — «+ e. get. Action. Command() + «\n»); } } public static void main(String[] args) { new Button. Events(); }} Swing

Переключатели JRadio. Button import javax. swing. *; import java. awt. *; public class Radio.Переключатели JRadio. Button import javax. swing. *; import java. awt. *; public class Radio. Buttons extends JFrame { public Radio. Buttons() { super(«Radio. Buttons»); set. Default. Close. Operation( EXIT_ON_CLOSE ); Container c = get. Content. Pane(); // получаем панель содержимого c. set. Layout(new Flow. Layout()); // используем последовательное расположение JRadio. Button r 1 = new JRadio. Button(«Сам по себе»); // отдельный переключатель // группа связанных переключателей в своей собственной панели JPanel panel = new JPanel(new Grid. Layout(0, 1, 0, 5)); // табличное расположение 0 – произвольное число строк panel. set. Border(Border. Factory. create. Titled. Border(«Внешний вид»)); // Создаем рамку с заголовком Button. Group bg = new Button. Group(); String[] names = { “Java», “Windows «, “Linux» }; for (int i=0; i < names. length; i++) { JRadio. Button radio = new JRadio. Button(names[i]); panel. add(radio); bg. add(radio); } // добавляем все в контейнер c. add(r 1); c. add(panel); pack(); // устанавливаем оптимальный размер set. Visible(true); // выводим окно на экран } public static void main(String[] args) { new Radio. Buttons(); } } Swing

Текстовые поля import javax. swing. *; import java. awt. Font; import java. awt. event.Текстовые поля import javax. swing. *; import java. awt. Font; import java. awt. event. *; public class Using. Text. Fields extends JFrame { // наши поля JText. Field small. Field, big. Field; public Using. Text. Fields() { super(«Using. Text. Fields»); set. Default. Close. Operation(EXIT_ON_CLOSE); // создаем текстовые поля c максимальным количеством символов small. Field = new JText. Field(10); big. Field = new JText. Field(«Текст поля», 25); // поле с начальным текстом // дополнительные настройки big. Field. set. Font(new Font(«Dialog», Font. PLAIN, 16)); big. Field. set. Horizontal. Alignment(JText. Field. RIGHT); // выравнивание по правому краю // слушатель окончания ввода в поле small. Field. add. Action. Listener(new Action. Listener() { public void action. Performed(Action. Event e) { // показываем введенный текст в диалоговом окне JOption. Pane. show. Message. Dialog( Using. Text. Fields. this, «Ваше слово: » + small. Field. get. Text()); }}); // поле с паролем JPassword. Field password = new JPassword. Field(15); password. set. Echo. Char(‘$’); // отображаемый символ $ // добавляем поля в окно и выводим его на экран JPanel contents = new JPanel(); contents. add(small. Field); contents. add(big. Field); contents. add(password); set. Content. Pane(contents); // добавление панели в окно set. Size(400, 300); set. Visible(true); } public static void main(String[] args) { new Using. Text. Fields(); } } Swing

Многострочные текстовые поля import javax. swing. *; import java. awt. Font; public class Using.Многострочные текстовые поля import javax. swing. *; import java. awt. Font; public class Using. Text. Area extends JFrame { public Using. Text. Area() { super(«Using. Text. Area»); set. Default. Close. Operation(EXIT_ON_CLOSE); // создаем пару многострочных полей JText. Area area 1 = new JText. Area(«Многострочное поле», 5, 10); // нестандартный шрифт и табуляция area 1. set. Font(new Font(» Times New Roman «, Font. PLAIN, 14)); area 1. set. Tab. Size(10); // по умолчанию 8 JText. Area area 2 = new JText. Area(15, 10); // параметры переноса слов area 2. set. Line. Wrap(true); area 2. set. Wrap. Style. Word(true); // добавим поля в окно JPanel contents = new JPanel(); contents. add(new JScroll. Pane(area 1)); contents. add(new JScroll. Pane(area 2)); set. Content. Pane(contents); // выводим окно на экран set. Size(400, 300); set. Visible(true); } public static void main(String[] args) { new Using. Text. Area(); } } Swing

Вывод вспомогательной информации import java. awt. *; import javax. swing. *; public class LabelsВывод вспомогательной информации import java. awt. *; import javax. swing. *; public class Labels extends JFrame implements Swing. Constants { public Labels() { super(«Labels»); // при закрытии окна заканчиваем работу set. Default. Close. Operation(EXIT_ON_CLOSE); // самая простая надпись JPanel contents = new JPanel(); JLabel l 1 = new JLabel(«Ваше имя: «); JText. Field name = new JText. Field(20); contents. add(l 1); contents. add(name); // надпись со значком JLabel l 2 = new JLabel(new Image. Icon(«monkey. gif»)); adjust. Label(l 2); l 2. set. Horizontal. Alignment(LEFT); // значок слева contents. add(l 2); // надпись с нестандартным выравниванием JLabel l 3 = new JLabel(«Текст и значок», new Image. Icon(«bulb. gif»), RIGHT); //значок справа adjust. Label(l 3); l 3. set. Vertical. Text. Position(BOTTOM); // текст снизу от значка l 3. set. Horizontal. Text. Position(LEFT); // текст слева от значка contents. add(l 3); // вывод окна на экран set. Content. Pane(contents); set. Size(320, 300); set. Visible(true); } // метод производит специальную настройку надписи private void adjust. Label(JLabel l) { l. set. Opaque(true); // непрозрачность l. set. Background(Color. red); // цвет фона l. set. Preferred. Size(new Dimension(250, 100)); } public static void main(String[] args) { new Labels(); } }

Всплывающие подсказки import javax. swing. *; import java. awt. event. *; public class Tool.Всплывающие подсказки import javax. swing. *; import java. awt. event. *; public class Tool. Tips extends JFrame { public Tool. Tips() { super(«Tool. Tips»); set. Default. Close. Operation(EXIT_ON_CLOSE); // добавим несколько кнопок с подсказками JButton b 1 = new JButton(«Один»); b 1. set. Tool. Tip. Text(«Это первая кнопка»); // задание подсказки JButton b 2 = new JButton() { public Point get. Tool. Tip. Location(Mouse. Event e) { return new Point(10, 10); // место вывода подсказки кнопки 1 , 10 пикселей от верхнего левого угла } public String get. Tool. Tip. Text(Mouse. Event e) { // место вывода первой подсказки кнопки 2 if ( e. get. Y() > 10 ) { return «Нижняя часть кнопки!»; } return super. get. Tool. Tip. Text(e); }}; b 2. set. Text(«Два»); b 2. set. Tool. Tip. Text(«Это вторая кнопка.

    » + // задание второй подсказки «Она:

  • Ничего не делает
  • Но ее можно нажать!»); JPanel contents = new JPanel(); contents. add(b 1); contents. add(b 2); // выводим окно на экран set. Content. Pane(contents); set. Size(400, 150); set. Visible(true); } public static void main(String[] args) { new Tool. Tips(); } }

Редактируемая таблица import javax. swing. *; public class Table. Default. Editing extends JFrame {Редактируемая таблица import javax. swing. *; public class Table. Default. Editing extends JFrame { // название столбцов private String[] columns = { «Имя», «Любимый Цвет» }; // данные для таблицы private String[][] data = { { «Иван», «Зеленый» }, { «Александр», «Красный»}, { «Петр», «Синий»} }; public Table. Default. Editing() { super(«Table. Default. Editing»); set. Default. Close. Operation(EXIT_ON_CLOSE); // создаем таблицу JTable table = new JTable(data, columns); // настраиваем стандартный редактор JCombo. Box combo = new JCombo. Box(new String[] { «Зеленый», «Желтый», «Белый»}); Default. Cell. Editor editor = new Default. Cell. Editor(combo); table. get. Column. Model(). get. Column(1). set. Cell. Editor(editor); // выводим окно на экран get. Content. Pane(). add(new JScroll. Pane(table)); set. Size(400, 300); set. Visible(true); } public static void main(String[] args) { new Table. Default. Editing(); } }

Использование стандартной модели таблицы import javax. swing. *; import javax. swing. table. *; importИспользование стандартной модели таблицы import javax. swing. *; import javax. swing. table. *; import java. awt. event. *; public class Using. Default. Table. Model extends JFrame { // наша модель private Default. Table. Model dtm; public Using. Default. Table. Model() { super(«Using. Default. Table. Model»); set. Default. Close. Operation(EXIT_ON_CLOSE); // создаем стандартную модель dtm = new Default. Table. Model(); // задаем названия стоблцов dtm. set. Column. Identifiers(new String[] {«Номер», «Товар», «Цена»}); // наполняем модель данными dtm. add. Row(new String[] {«№ 1», «Блокнот», «5. 5»}); dtm. add. Row(new String[] {«№ 2», «Телефон», «175»}); dtm. add. Row(new String[] {«№ 3», «Карандаш», «1. 2»}); // передаем модель в таблицу JTable table = new JTable(dtm); // данные могут меняться динамически JButton add = new JButton(«Добавить»); add. Action. Listener(new Action. Listener() { public void action. Performed(Action. Event e) { // добавляем новые данные dtm. add. Row(new String[] {«? «, «Новинка!», «Супер Цена!»}); } }); JButton remove = new JButton(«Удалить»); remove. add. Action. Listener(new Action. Listener() { public void action. Performed(Action. Event e) { // удаляем последнюю строку (отсчет с нуля) dtm. remove. Row(dtm. get. Row. Count() — 1); } }); // добавляем кнопки и таблицу в панель содержимого get. Content. Pane(). add(new JScroll. Pane(table)); JPanel buttons = new JPanel(); buttons. add(add); buttons. add(remove); get. Content. Pane(). add(buttons, «South»); // выводим окно на экран set. Size(300, 300); set. Visible(true); } public static void main(String[] args) { new Using. Default. Table. Model(); } }

import java. awt. *;  import java. awt. event. *;  class Hello. World.import java. awt. *; import java. awt. event. *; class Hello. World. Frame extends Frame{ Hello. World. Frame(String s){ super(s); } public void paint(Graphics g){ g. set. Font(new Font(«Serif», Font. ITALIC | Font. BOLD, 30)); g. drawstring(«Hello, XXI century World!», 20, 100); } public static void main(String[] args){ Frame f = new Hello. World. Frame(«Здравствуй, мир XXI века!»); f. set. Size(400, 150); f. setvisible(true); f. add. Window. Listener(new Window. Adapter(){ public void windowciosing(Window. Event ev)( System. exit(0); } }); } }

import java. io. *;  //импортирование пакета ввода-вывода import java. awt. *;  //импортированиеimport java. io. *; //импортирование пакета ввода-вывода import java. awt. *; //импортирование пакета awt import java. awt. event. *; //импортирование пакета поддержки событий public class GUISample extends Frame { //объявление класса GUISample Button b 1 = new Button («Add»); //создание кнопки с надписью «Add» Choice ch 1= new Choice (); //создание раскрывающегося списка Text. Field tf 1 = new Text. Field (); //создание текстового поля (строки //ввода) Label label 1 = new Label («Enter your text here: «); //создание текстовой //строки List l 1 = new List (); //создание списка public GUISample(){ //объявление конструктора класса set. Layout( null ); //отключение менеджера компоновки set. Size(600, 400); //установка размеров фрейма set. Title(«This is my Frame»); //установка заголовка фрейма set. Background( Color. cyan); //установка цвета заднего фона фрейма add(b 1); //добавление кнопки к окну b 1. set. Bounds(220, 200, 84, 24); //установка размеров кнопки b 1. set. Foreground( Color. black); //установка цвета переднего фона кнопки b 1. set. Background( Color. magenta); //установка цвета заднего фона кнопки add(ch 1); //добавление раскрывающегося списка к окну ch 1. set. Bounds(50, 120, 20); //установка размеров раскрывающегося //списка add(tf 1); //добавление текстового поля к окну tf 1. set. Bounds(200, 80, 120, 20); //установка размеров текстового поля add(label 1); //добавление текстовой строки к окну label 1. set. Bounds(200, 55, 120, 20); //установка размеров текстовой строки add(l 1); //добавление списка к окну l 1. set. Background( Color. white); //установка цвета заднего фона списка l 1. set. Bounds(350, 120, 200, 216); //установка размеров списка /*регистрация блока прослушивания событий типа Window. Event*/ add. Window. Listener( new Window. Close()); /*регистрация блока прослушивания событий типа Action. Event*/ b 1. add. Action. Listener( new Button. Add()); } /*объявление класса-адаптера для обработки Window-событий*/ class Window. Close extends Window. Adapter { /*метод, который вызывается при закрытии окна*/ public void window. Closing( Window. Event we) { set. Visible( false ); //фрейм-окно становится невидимым } } /*объявление класса для обработки Action-событий (класс Button. Add реализует интерфейс Action. Listener)*/ class Button. Add implements Action. Listener { /*реализация метода, который вызывается при наступлении action-события*/ public void action. Performed( Action. Event event) { /*добавление текста из текстового поля в раскрывающийся список*/ ch 1. add(tf 1. get. Text()); /*добавление текста из текстового поля в список*/ l 1. add(tf 1. get. Text(), 2); } } static public void main( String args[]){ //объявление метода main() GUISample My. Frame= new GUISample(); //создание экземпляра класса GUISample My. Frame. set. Visible( true ); //выведение окна на экран дисплея } }