Sep 181 Example Program DemoTranslateEnglishGUI.java.

Slides:



Advertisements
Similar presentations
Event handling and listeners What is an event? user actions and context event sources and listeners Why should my programs be event- driven? User interaction.
Advertisements

Jan Event Handling -1.1 Yangjun Chen Dept. Business Computing University of Winnipeg.
Events and the AWT The objectives of this chapter are: To understand the principles of the Java 1.1 event model To understand how the event model is used.
Event Handling. In this class we will cover: Basics of event handling The AWT event hierarchy Semantic and low-level events in the AWT.
Liang, Introduction to Java Programming, Seventh Edition, (c) 2009 Pearson Education, Inc. All rights reserved Chapter 15 Event-Driven Programming.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 14 Event-Driven Programming.
Events ● Anything that happens in a GUI is an event. For example: – User clicks a button, presses return when typing text, or chooses a menu item ( ActionEvent.
For IST410 Students only Events-1 Event Handling.
Event-Driven Programming
Event Handling n Events: an event is an object that describes a state change in a source. n Event Sources: A source is an object that generates an event.
Event-Driven Programming
OOP Java1 Event Handling Overview Listeners, Adapters and Event Sources Inner classes Event Handling Details Applets and GUI Applications Event.
1 Gui Programming (Part I) Graphical User Interfaces (Part I) l Introduction to events. l A Brief history. l Event sources and listeners. l The delegation.
Java 212: Interfaces Intro to UML Diagrams. UML Class Diagram: class Rectangle +/- refers to visibility Color coding is not part of the UML diagram.
Intermediate Java1 An example that uses inner classes Week Four Continued.
1 lecture 12Lecture 13 Event Handling (cont.) Overview  Handling Window Events.  Event Adapters Revisited.  Introduction to Components and Containers.
Lecture 18 Review the difference between abstract classes and interfaces The Cloneable interface Shallow and deep copies The ActionListener interface,
Liang, Introduction to Java Programming, Ninth Edition, (c) 2013 Pearson Education, Inc. All rights reserved. 1 Chapter 16 Event-Driven Programming.
GUI Event Handling Nithya Raman. What is an Event? GUI components communicate with the rest of the applications through events. The source of an event.
3461 Sequential vs. Event-driven Programming Reacting to the user.
28-Aug-15 Air Force Institute of Technology Electrical and Computer Engineering Object-Oriented Programming Design Topic : Event Handling – GUI Part II.
Welcome to CIS 083 ! Events CIS 068.
1 CSE 331 More Events (Mouse, Keyboard, Window, Focus, Change, Document...) slides created by Marty Stepp based on materials by M. Ernst, S. Reges, D.
More Event Handling Adapters Anonymous Listeners Pop menus Validating User Input.
Liang, Introduction to Java Programming, Sixth Edition, (c) 2007 Pearson Education, Inc. All rights reserved Chapter 14 Event-Driven Programming.
(c) University of Washington07b-1 CSC 143 Java Events, Event Handlers, and Threads Reading: Ch. 17.
– Advanced Programming P ROGRAMMING IN Lecture 21 Introduction to Swing.
1 Outline 1 Introduction 2 Overview of Swing Components 3 JLabel 4 Event Handling 5 TextFields 6 How Event Handling Works 7 JButton 8 JCheckBox and JRadioButton.
Graphic User Interface. Graphic User Interface (GUI) Most of us interact with computers using GUIs. GUIs are visual representations of the actions you.
1 Unit 5 GUI Aum Amriteshwaryai Namah. 2 Overview Shall learn how to reuse the graphics classes provided by Java for constructing Graphical User Interface.
Pravin Yannawar, DOCS, NMU Jalgaon. Basic Java : Event handling in AWT and Swing 2 Objectives of This Session Explain the Event handling mechanism & demonstrate.
Object-Oriented Program Development Using Java: A Class-Centered Approach, Enhanced Edition.
Creating Windows. How can we use Java to create programs that use windows (GUI applications)? How can we use Java to create programs that use windows.
Event Handling. Event Driven Programming Flow of programs is determined by events. The Operating system recognizes events and passes them to the particular.
Creating a GUI with JFC/Swing. What are the JFC and Swing? JFC –Java Foundation Classes –a group of features to help people build graphical user interfaces.
UID – Event Handling and Listeners Boriana Koleva
COSC 3461: Module 2 Control Flow Paradigms: Reacting to the User.
Java GUI. Graphical User Interface (GUI) a list a button a text field a label combo box checkbox.
Anonymous Classes An anonymous class is a local class that does not have a name. An anonymous class allows an object to be created using an expression.
Lesson 6 Programming Techniques Event Handling /EvH/ AUBG ICoSCIS Team Assoc. Prof. Stoyan Bonev March, , 2013 SWU, Blagoevgrad.
Object Oriented Programming.  Interface  Event Handling.
Event Handling. The signals that a program receives from the operating system as a result of the actions are called events. A window based program is.
Ch13 Creating windows and applets. Short overview AWT (Abstract Windowing Toolkit) Early Java development used graphic classesEarly Java development used.
Index Event Handling Events Event Source Event Listener Event Classes Action Event Class Adjustment event Class Event Source Event Listener Interface Using.
Event-Driven Programming CSCI 201L Jeffrey Miller, Ph.D. HTTP :// WWW - SCF. USC. EDU /~ CSCI 201 USC CSCI 201L.
What Is an Event? Events – Objects that describe what happened Event sources – The generator of an event Event handlers – A method that receives an event.
1 Chapter 3 Event-Driven Programming. 2 Objectives F To explain the concept of event-driven programming (§12.2). F To understand event, event source,
Mouse Events GUI. Types of Events  Below, are some of the many kinds of events, swing components generate. Act causing EventListener Type User clicks.
Event Handling and Listeners in SWING The practice of event handling.
Chapter 10 - Writing Graphical User Interfaces1 Chapter 10 Writing Graphical User Interfaces.
1CS480: Graphical User Interfaces. Dario Salvucci, Drexel University. Lecture 6: Event-Driven Programming.
1 DemoBasic_v3, DemoBasic_v4 JButton JLabel. 2 Registering an ActionListener Register by invoking the following from within constructor DemoBasicFrame.
Prepared by: Dr. Abdallah Mohamed, AOU-KW Unit7: Event-driven programming 1.
CSC 205 Programming II Lecture 5 AWT - I.
Chapter 14 Event-Driven Programming
Welcome To java
Programming in Java, 2e Sachin Malhotra Saurabh Choudhary.
CHAPTER Reacting to the user.
Chapter 12 Event-Driven Programming
Programming in Java Sachin Malhotra, Chairperson, PGDM-IT, IMS Ghaziabad Saurabh Chaudhary, Dean, Academics, IMS Ghaziabad.
Event Handling Chapter 2 Objectives
A First Look at GUI Applications
Programming in Java Event Handling
GUI Event Handling Nithya Raman.
Event-driven programming for GUI
Chapter 16 Event-Driven Programming
Events, Event Handlers, and Threads
Constructors, GUI’s(Using Swing) and ActionListner
Programming Graphical User Interface (GUI)
Presentation transcript:

Sep 181 Example Program DemoTranslateEnglishGUI.java

Sep 182 Java’s Event Class Hierarchy EventObject AWTEvent ActionEvent ComponentEvent InputEventWindowEvent MouseEvent KeyEvent Used in example program Note: this diagram is not complete. It just shows the most common event classes

Sep 183 Java Events When a user types characters or uses the mouse, Java’s window manager sends a notification to the program that an event has occurred E.g., when the user presses a key on the keyboard, a key pressed event occurs There are many, many kinds of events (e.g., key pressed, key released, key typed) Many are of no interest Some are of great interest

Sep 184 Java Events (2) To receive notification of events of interest, a program must install event listener objects It is not enough to simply know that an event has occurred; we need to know the event source E.g., a key was pressed, but in which of several text fields in the GUI was the key pressed? So, an event listener must be installed for particular components that may generate the event

Sep 185 import... public class NameOfProgram { public static void main(String[] args) { } public class NameOfProgramFrame { } Identify packages containing classes used in the program 1. Construct the GUI frame 2. Give it a title 3. Show it 4. Done!!!! Naming convention (just add “Frame” to name of program) All the work is done here

Sep 186 import... public class NameOfProgram { public static void main(String[] args) { } public class NameOfProgramFrame extends JFrame { } Our GUI frame class is actually a JFrame – extended and modified to suit our needs

Sep 187 JFrame Class in the javax.swing package Sun’s Swing toolkit is Java’s most advanced toolkit Life before Swing… AWT (abstract windowing toolkit) AWT used “native” UI components (unique to local system) This creates inconsistencies across platforms UI components of AWT are now obsolete AWT still used for drawing, images,etc. Swing paints the components itself Pro: code is consistent across platforms Con: results in “big” programs (lots of memory!) Swing still uses many features of AWT

Sep 188 import... public class NameOfProgram { public static void main(String[] args) { } public class NameOfProgramFrame extends Jframe implements KeyListener { } Our GUI class implements the methods of the KeyListener listener

Sep public class NameOfProgramFrame extends Jframe implements KeyListener { public... private... public class NameOfProgramFrame() {} public void keyPressed(KeyEvent ke) {} public void keyReleased(KeyEvent ke) {} public void keyTyped(KeyEvent ke) {} public... private... } Declare variables (“fields”, “attributes”) Constuctor Must implement all three KeyListener methods, even though just one is used. Other methods

Sep 1810 Frame Constructor Must… Create and configure the GUI components Install (“add”) listeners Listeners are not just installed, they must be associated with particular GUI components Arrange components in panel(s) Get the JFrame’s content pane Add panel(s) to content pane

Sep 1811 Listeners Java’s listener classes are actually interfaces (not classes) What is an interface?

Sep 1812 Interfaces vs. Classes The definition of a class includes both the design of the class and its implementation Sometimes it is desirable only to design a class, leaving the implementation for later This is accomplished through an interface An interface contains only the design of a class Includes signatures for its members (methods and fields) No implementation is provided

Sep 1813 Characteristics of Interfaces Interfaces… Do not have instance variables You cannot instantiate an object of an interface Include only abstract methods Methods have a signature (i.e., a name, parameters, and return type) Methods do not have an implementation (i.e., no code) Include only public methods and fields Does not make sense to define private members if the public members that could potentially use them are themselves not implemented

Sep 1814 Listeners (revisited) The signature of our extended JFrame class includes the clause implements KeyListener This means our class must include definitions for the methods of the KeyListener listener Thus… Our implementation includes the code we want executed when a key is pressed, released, and/or typed public void keyPressed(KeyEvent ke) {} public void keyReleased(KeyEvent ke) {} public void keyTyped(KeyEvent ke) {}

Sep 1815 Installing Listeners It is not enough simply to implement the methods of a listener The listener must also be “installed” (aka “registered”, “added”) Furthermore, it must be installed for the component to which the listener methods are to be associated Thus (from our example program) enterArea.addKeyListener(this); Component to which the listener methods are to be associated An object of a class that implements the listener methods

Sep 1816 Installing Listeners (2) Consider the method addKeyListener Fact #1: addKeyListener is a method of the Component class (check the API Spec) Fact #2: enterArea (from our example) is an object (instance variable) of the JTextArea class Fact #3: Through inheritance, a JTextArea object is a Component object Conclusion: the addKeyListener method can be invoked on enterArea

Sep 1817 Installing Listeners (3) Signature for the addKeyListener method: Description: In our example, we used this as the “specified key listener” Indeed, the current instance of our extended JFrame class (“this”) is a key listener because it implements the key listener methods Result: when a key pressed event occurs on the enterArea component, the keyPressed method in our extended JFrame class will execute! public void addKeyListener(KeyListener) Adds the specified key listener to receive key events from this component.

Sep 1818 Let’s Say That Again… When a key pressed event occurs on the enterArea component, the keyPressed method in our extended JFrame class will execute!

Sep 1819 Processing Events Signature for the keyPressed method: When our keyPressed method executes, it receives a KeyEvent object as an argument We use the KeyEvent object to Determine which key was pressed, using getKeyChar, getKeyCode, etc. Determine the source of the event, using getSource “Determine the source of the event” is important if there is more than one component registered to receive key events (not the case in our example program) public void keyPressed(KeyEvent ke)

Sep 1820 Event Sources Java’s event classes are all subclasses of EventObject (see earlier slide) EventObject includes the getSource method: Didn’t need this in our example program, because only one object (enterArea) was registered to generate key events So, when the keyPressed method executes we know it is because a key was pressed in enterArea But, if we have two JTextArea components… public Object getSource()

Sep 1821 Event Sources (2) public void keyPressed(KeyEvent ke) { if (ke.getSource() == enterArea1) { // code for enterArea1 key pressed events } else if (ke.getSource() == enterArea2) { // code for enterArea2 key pressed events }

Sep 1822 Back to the Example Program…... public class NameOfProgramFrame extends Jframe implements KeyListener {... private class WindowCloser extends WindowAdapter { public void windowClosing(WindowEvent we) { System.exit(0); }

Sep 1823 Adapter Classes What is an adapter class? A class provided as a convenience in the Java API An adapter class includes an empty implementation of the methods in a listener Programmers extend the adapter class and implement the methods of interest, while ignoring methods of no interest

Sep 1824 WindowAdapter public abstract class WindowAdapter implements WindowListener { void windowActivated(WindowEvent we) {} void windowClosed(WindowEvent we) {} void windowClosing(WindowEvent we) {} void windowDeactivated(WindowEvent we) {} void windowDeiconified(WindowEvent we) {} void windowIconified(WindowEvent we) {} void windowOpened(WindowEvent we) {} }

Sep 1825 Using the WindowAdapter Class Define an inner class that extends the WindowAdapter class Implement the listener methods of interest Ignore other listener methods In the frame constructor, use the appropriate “add” method to add an object of the extended WindowAdapter class In our example program… this.addWindowLisener(new WindowCloser());

Sep 1826 Examples of Listeners and Adapters Listeners (# methods)Adapters KeyListener (3)KeyAdapter WindowListener (7)WindowAdapter MouseListener (5)MouseAdapter MouseMotionListener (2)MouseMotionAdapter MouseInput Listener (7)MouseInputAdapter ActionListener (1)- ItemListener (1)- FocusListener (2)FocusAdapter (Note: MouseInputListener combines MouseListener and MouseMotionListener)

Sep 1827 Extending Adapters vs. Implementing Listeners Largely a matter of personal choice Our example program does both The KeyListener methods were implemented The WindowAdapter class was extended Could have done the opposite, i.e., Extend the KeyAdapter class Implement the WindowListener methods Note: a Java class can implement many listeners, but it can extend only one class Java does not include multiple inheritance (unlike C++ or Eiffel)

Sep 1828 Pros and Cons Using adapter classes Advantage Only the listener methods needed are defined Disadvantage A bit complicated to setup Need to define an inner class, then instantiate an object of the inner class to pass to the appropriate “add” method Implementing listener methods Advantage A class can implement many different listeners Disadvantage Must implement all the methods defined in the listener (even those not used)

Sep 1829 The Good, The Bad, and The Arcane Do you like creating code that mere mortals find incomprehensible? If so, you’ll like this one. Delete the inner class definition… and replace this… with this… this.addWindowListener(new WindowCloser()); private class WindowCloser extends WindowAdapter {public void windowClosing(WindowEvent we) {System.exit(0); } this.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0);} });

Sep 1830 Example Program DemoKeyEvents2.java

Sep 1831 Example Program DemoMouseEvents.java