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

JAVA GUI PART III

  • Upload
    oxus-20

  • View
    477

  • Download
    3

Embed Size (px)

DESCRIPTION

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...

Citation preview

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