Top Banner
https://www.facebook.com/Oxus20 [email protected] JAVA GUI PART III Milad Kawesh » GUI ˃ Events ˃ Event Handling
21

JAVA GUI PART III

Jun 13, 2015

Download

Education

OXUS 20

Java GUI PART III is the continues of JAVA GUI PART I and II covering and discussing the GUI components with events and events handling as for instance Action Event, Mouse Event, Key Event, etc...
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: JAVA GUI PART III

https://www.facebook.com/Oxus20

[email protected]

JAVA GUI

PART III

Milad Kawesh

» GUI

˃ Events

˃ Event Handling

Page 2: JAVA GUI PART III

Agenda

» Events

» Java Delegation Model

» Event Handling

» Practical Examples

2

https://www.facebook.com/Oxus20

Page 3: JAVA GUI PART III

Windows based Java Programs

» Console-Based Programming

˃ Every thing is predetermined

˃ The program code determines the sequence of events

» Window-Based Programming

˃ The operation is driven by what you do with the GUI

˃ Selecting menu items, buttons, or keyboard causes particular

actions within a program

˃ The specific program that is executed next is not known 3

https://www.facebook.com/Oxus20

Page 4: JAVA GUI PART III

Event driven Programming

» The signals that a program receives from the OS as a result of your actions are called events

» A window based program is called event driven program

» Unlike the old rigid old sequential programs,

» it puts user in charge, user control the sequence of program

» Application waits for the user action

» This approach is called event driven programming 4

https://www.facebook.com/Oxus20

Page 5: JAVA GUI PART III

The Event Handling Process

» Suppose a user clicks a button in the GUI

˃ Button is the source of the event

» When a button is clicked, it will create a new object that have information about event and its source (in this case ActionListener)

» This object is passed to a method that handles the event in its listener

» A listener is called Target of an event 5

https://www.facebook.com/Oxus20

Page 6: JAVA GUI PART III

Delegation Event Model

» The way in which events are handled in Java, using listener

objects, is called delegation event model

» We can make objects of any class listener objects by making

the class implement a listener interface

» In case of the button, the ActionListener interface needs to

be implemented to receive events from button

» actionPerformed(ActionEvent e) is called when the event

occurs and the event object is passed as an argument 6

https://www.facebook.com/Oxus20

Page 7: JAVA GUI PART III

Java Events » Events are objects

˃ Objects that represent user initiated actions

˃ Examples:

+ button clicked -> ActionEvent

+ mouse dragged -> MouseEvent

+ Enter key pressed -> KeyEvent

˃ EventObject; root event class for all event objects

˃ AWTEvent; root event class for all AWT events

˃ Package java.awt.event

+ Provides interfaces and classes for dealing with different types of events fired by AWT components.

7

https://www.facebook.com/Oxus20

Page 8: JAVA GUI PART III

8

https://www.facebook.com/Oxus20

Page 9: JAVA GUI PART III

Event Handling

» Programmer choice to decide how to handle the

generated event

˃ Ignore the Event

˃ Have the Event handled by the component where the

event was generated (Self Contained Event handling)

˃ Delegate event handling to some other object called

Listeners (Event Delegation)

9

https://www.facebook.com/Oxus20

Page 10: JAVA GUI PART III

Event Delegation

» Some time component on which event was

generated is not best suited to handle its own

event

» The process of assigning an object to handle a

component’s events is called delegation.

» The event handling objects are called Listeners

10

https://www.facebook.com/Oxus20

Page 11: JAVA GUI PART III

Key Methods of Event

» Object getSource()

In ObjectEvent, return the component in

which event took place.

» int getID()

In AwtEvent, return int that describes the

nature of the event e.g. on MouseEvent it will

give MOUSE_PRESSED, MOUSE_DRAGGED. 11

https://www.facebook.com/Oxus20

Page 12: JAVA GUI PART III

Event Listeners

» Interfaces to support dispatching of events

» Each Event class has a corresponding Listener interface

» Multiple listeners for the same event type

» Each interface will have one or more method

corresponding to types of events

» ActionEvent -> ActionListener

» MouseEvent -> MouseListener and MouseMotionListener 12

https://www.facebook.com/Oxus20

Page 13: JAVA GUI PART III

Registering Listeners

» Listeners register themselves with component

˃ public void addXXXListener(XXXListener)

˃ addActionListener, addItemListener, etc.

» Multiple listeners can be registered for the same

event on a component

˃ One event can trigger numerous responses

˃ Events are broadcast to all listeners 13

https://www.facebook.com/Oxus20

Page 14: JAVA GUI PART III

Wiring a Listener

» Define a class to implement the Listener Interface Public class Applet extends Applet implements ActionListener

public class MyClass implements ActionListener {

» Add the implementation of the Interface …

public void actionPerformed(ActionEvent e) {

// here’s where I do stuff when the action happens

» Add class as a Listener to Component …

Button ok = new Button(“OK”)

ok.addActionListener(this);

14

https://www.facebook.com/Oxus20

Page 15: JAVA GUI PART III

ActionListener Example import javax.swing.*;

import java.awt.FlowLayout;

import java.awt.Dimension;

import java.awt.event.ActionListener;

import java.awt.event.ActionEvent;

public class ActionListenerTest extends JFrame implements ActionListener {

JTextArea topTextArea;

JTextArea bottomTextArea;

JButton button1, button2;

final static String newline = "\n";

15

https://www.facebook.com/Oxus20

Page 16: JAVA GUI PART III

ActionListener Example (cont.) public ActionListenerTest() {

setLayout(new FlowLayout());

topTextArea = new JTextArea();

topTextArea.setEditable(false);

JScrollPane topScrollPane = new JScrollPane(topTextArea);

topScrollPane.setPreferredSize(new Dimension(200, 75));

add(topScrollPane);

bottomTextArea = new JTextArea();

bottomTextArea.setEditable(false);

JScrollPane bottomScrollPane = new JScrollPane(bottomTextArea);

bottomScrollPane.setPreferredSize(new Dimension(200, 75));

16

https://www.facebook.com/Oxus20

Page 17: JAVA GUI PART III

ActionListener Example (cont.) add(bottomScrollPane);

button1 = new JButton("top Text area");

add(button1);

button2 = new JButton("down text area");

add(button2);

button1.addActionListener(this);

button2.addActionListener(this);

setSize(300, 222);

setResizable(false);

setLocationRelativeTo(null);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

} 17

https://www.facebook.com/Oxus20

Page 18: JAVA GUI PART III

ActionListener Example(cont.)

public void actionPerformed(ActionEvent e) {

if (e.getSource() == button1) {

topTextArea.append(e.getActionCommand() + newline);

}

if (e.getSource() == button2) {

bottomTextArea.append(e.getActionCommand() + newline);

}

}

public static void main(String[] args) {

new ActionListenerTest();

}

}

18

https://www.facebook.com/Oxus20

Page 19: JAVA GUI PART III

OUTPUT

19

https://www.facebook.com/Oxus20

Page 20: JAVA GUI PART III

Lets practice

20

https://www.facebook.com/Oxus20

Page 21: JAVA GUI PART III

END

https://www.facebook.com/Oxus20

21