Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

18
Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2

Transcript of Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

Page 1: Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

Introduction to Java 2 Programming

Lecture 9

Java Swing API, Part 2

Page 2: Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

Overview

• Event Handling Basics

• Swing Events Examples– Mouse Events– Actions– Window Events

• Developing the Calculator

Page 3: Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

Event Handling Basics• Event handling always has the following pattern

– Involves 3 distinct roles

• Source object which is object of interest– Generates events under certain conditions– In Swing these are user activities

• Event object that describes what happened– Encapsulates the event context– Who did what, on which object, etc

• Listeners which receive events– Receiving an event is a method call on the listener– Different categories of event listeners

Page 4: Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

Event Handling Basics

• Listeners are registered with source objects– Ties them together– Informs the source object about who to deliver

events to

• This is a many-many relationship– A source object may have multiple listeners– A listener may listen to multiple source objects

Page 5: Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

Event Handling in Robocode

• Think back to the Robocode examples…• The Arena was the source of interesting events

– Has a bullet hit, have I seen another robot?

• There were different event objects– BulletHitEvent, RobotScannedEvent

• The Robot could listen for events by implementing specific methods– onBulletHit, onRobotScanned

• Robot base class handled registration for you– And provided “do nothing” versions of the above methods

Page 6: Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

Event Handling Conventions• Listeners are described using interfaces• Naming convention: XXXListener

– Where XXX denotes the category of listener E.g. WindowListener

– Creating a listener means implementing that interface

• Register a listener with the addXXXListener method on the source object– Generally a removeXXXListener also– Source object will be a Swing component, i.e. a sub-class of java.awt.Component

– The Component class provides the add/remove methods

Page 7: Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

Event Handling Conventions

• Event object typically extend java.awt.Event– Some of the ‘newer’ ones don’t

• Events share some common attributes– a timestamp, source object, etc

Page 8: Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

Event Handling Conventions

Page 9: Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

Mouse Events

• Natural for Swing to expose mouse-related events– It’s how the user interacts with the GUI

• MouseListener interface describes the basic events

• Each method accepts a MouseEvent object parameter

• java.awt.Component has add/remove listener methods

Page 10: Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

Mouse Events

Page 11: Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

Mouse Events

• So, capturing basic mouse events involves:– Creating an implementation of MouseListener

– Calling addMouseListener on one or more Components to register it

• Example code…

Page 12: Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

Action Events• Very tedious implementation if all activities were dealt

with as individual clicks• Swing provides higher level ‘action’ event• Meaning of event depends on component

– E.g. button click, menu selection, etc

• Basic classes:– ActionEvent – identifies action, key modifiers, etc– ActionListener – single actionPerformed method– addActionListener, removeActionListener

methods on Component

Page 13: Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

Window Events

• Swing allows the capturing of window related events– Activate, deactivate, minimise, open, close etc

• setDefaultCloseOperation is only useful if you don’t want to do anything complex

• Basic classes/methods– WindowEvent – identifies Window– WindowListener – range of methods– addWindowListener, removeWindowListener

methods on JFrame, JWindow, JDialog

Page 14: Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

Other Swing Events• More Mouse events

– Mouse motion, mouse wheels

• Item events– Selecting/deselecting items in lists, checkboxes, etc

• Key Events– Raw keyboard input

• Tree Events– Opening/closing nodes in a tree component

• Drag and drop• …and many more. See javax.swing.event and java.awt.event packages.

Page 15: Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

Developing the Calculator

• To add functionality to the Calculator GUI we need to:

• Implement the ActionListener interface to respond to button clicks– Can do this on the ButtonPanel class

• Associate this with each button on the calculator

Page 16: Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

The Calculator Logic• Check which button has been clicked

– Use ActionEvent.getObject to get the button

– Then ask the button for its action command, getActionCommand

• Clicked a number button?– Then update the JTextField to add digits

– Use getText and setText methods

• Clicked the point button?– Then add a decimal point, but only once!

Page 17: Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

The Calculator Logic• Clicked an operator (+, -, etc)?

– Then store current value of JTextField (first number)– And, remember which operator– And, reset the field (for the second number)– Finally set a flag to indicate we’re in a calculation

• Clicked the equals button?– Then take the first number and the current value of the JTextField, and ask a Calculator object to do the math

– Display the result– And reset the calculation flag

Page 18: Introduction to Java 2 Programming Lecture 9 Java Swing API, Part 2.

The Calculator Logic

• The Calculator object can be very simple– Adapt our earlier implementation…– Use double for extra precision