Events in Java Swing - PowerPoint PPT Presentation

1 / 16
About This Presentation
Title:

Events in Java Swing

Description:

code; command2: code; Typical GUI program. GUI program: main() decl data storage; initialization code; create GUI; register callbacks; main event loop; ... – PowerPoint PPT presentation

Number of Views:96
Avg rating:3.0/5.0
Slides: 17
Provided by: chris78
Category:
Tags: code | events | java | swing

less

Transcript and Presenter's Notes

Title: Events in Java Swing


1
Events in Java Swing
  • Chris North
  • cs3724 HCI

2
Typical command line program
  • Non-interactive
  • Linear execution

program main() code code code code co
de code code code code code code cod
e
3
Interactive command line program
program main() decl data storage initializa
tion code loop get command switch(comm
and) command1 code command2 c
ode
  • User input commands
  • Non-linear execution
  • Unpredictable order
  • Much idle time

4
Typical GUI program
GUI program main() decl data
storage initialization code create
GUI register callbacks main event
loop Callback1() //button1 press code Cal
lback2() code
  • User input commands
  • Non-linear execution
  • Unpredictable order
  • Much idle time
  • Event callback procs

5
GUI Events
App1
App2
mouseclick
OK
OK
Cancel
Cancel
App2 code OKbtn_click() do
stuff OKbtn_mouseover() do more
stuff CancelBtn_click() do different
stuff
App1 event loop
WindowSystem event loop
App2 event loop
whichapp?
inputdevice
whichcallback?
6
Java Swing program
Java program Class main() decl data
storage initialization code create GUI
objects register listeners listener1() do
stuff listener2() do stuff
  • Event loop automaticin separate thread

7
Example
Example draw program MyDrawClass main() Dat
aStruct drawn_shapes drawn_shapes.clear() c
reate Frame, Panel, buttons, register
listeners DrawPanel_listener_click() drawn_s
hapes.add(new shape) UndoButton_listener_click(
) drawn_shapes.deleteLast()
8
Java Listeners
  • Register with a component to receive events
  • Give component a ref to your Listener object
  • JButton1.addMouseListener(new myMouseListener)
  • Receive events from component
  • Component will call callback procs on your
    Listener object
  • myMouseListener.mouseClicked(event)

click
JButton1
1. addMouseListener( )
2. mouseClicked( )
myMouse-Listener
9
Listener API
  • Listeners must inherit from Java Listener base
    classes
  • ActionListener, KeyListener, MouseListener,
    MouseMotionListener, WindowListener,
  • Abstract base classes xxxxListener
  • Stubbed base classes xxxxAdapter
  • MouseListener
  • mouseClicked(), mouseEntered(), mouseExited(),
    mousePressed(), mouseReleased()

10
Code
  • button1 new JButton(press me)
  • myListener new myListenClass
  • button1.addMouseListener(myListener)
  • // extending a class (subclassing)
  • class myListenClass extends MouseAdapter
  • public void mouseClicked(MouseEvent e)
  • // button clicked, do stuff here
  • // OR implementing an interface
  • class myListenClass implements MouseListener
  • public void mouseClicked(MouseEvent e)
  • // button clicked, do stuff here

An abstract base class (methods, no code)
11
Event objects
  • mouseClicked(MouseEvent e)
  • MouseEvent
  • getX( ), getY( ), getClickCount( ), getSource( ),
  • For each listener type
  • Component.addxxxxListener( )
  • xxxxListener abstract base class
  • xxxxAdapter stubbed base class
  • xxxxEvent

12
Inheritance with Swing
  • class myPanel extends JPanel
  • public myPanel() //constructor
  • // create buttons,
  • public void paintComponent(Graphics g)
  • super.paint(g) //call overriden method
  • // paint stuff here
  • myPanel creates JPanel via inheritance
  • Override JPanel methods to add functionality

13
Simplifying Implements
abstract base class
  • class myPanel extends JPanel implements
    MouseListener
  • public myPanel() //constructor
  • button1 new JButton(press me)
  • button1.addMouseListener(this)
  • add(button1)
  • public void mouseClicked(MouseEvent e)
  • // button clicked, do stuff here

14
Simplifying Anonymous classes
  • class myPanel extends JPanel
  • public myPanel()
  • button1 new JButton(press me)
  • button1.addMouseListener(
  • new MouseAdapter()
  • public void mouseClicked(MouseEvent e)
  • // button clicked, do stuff here
  • )
  • add(button1)

Defining and instantiating a class on the fly
15
In JBuilder
  • Application
  • JFrame, JPanel, JButton
  • Layout managers
  • Event listeners

16
Homework 3
  • Painter Applet
Write a Comment
User Comments (0)
About PowerShow.com