Transcript Lecture 11
Software Construction
Lecture 11
GUI Programming
in Java
1
GUI Programming Concepts
conventional programming:
sequence of operations is determined
by the program
what you want to happen, happens when you want it
event-driven programming:
sequence of operations is determined
by the user’s interaction with the application’s interface
anything that can happen, happens at any time
2
GUI Design Concepts
Principles of good GUI Design
IBM's Design concepts
Saul Greenberg's HCI pages
Tim's HCI notes
3
GUI Programming Concepts in Java
Java GUI has components
Windows GUI has controls
Unix GUI has widgets
examples: labels, buttons, check boxes, radio
buttons, text input boxes, pull down lists
Swing components: JLabel, JButton, JCheckBox,
JRadioButton, JTextField, JTextArea, JComboBox
4
Java GUI history: the AWT
5
AWT(JDK 1.0, 1.1):
Abstract Window Toolkit
package: java.awt, java.awt.event
heavyweight components using native GUI system
elements
used for applets until most browsers supported JRE 1.2
Swing in Java
Swing(Java 2, JDK 1.2+)
lightweight components that do not rely on the
native GUI or OS
“look and feel” of Swing components
are identical on different platforms
can be customized
Swing inherits from AWT
AWT still used for events, layouts
6
Swing Components in Java
7
advanced GUI support. e.g. drag-and-drop
package names: javax.swing, javax.swing.event
components inherit from JComponent
components are added to a top-level container:
JFrame, JDialog, or JApplet.
running a Swing application
java -Dswing.aatext=true
MySwingClass
the option sets the system property "swing.aatext" to "true" to
enable anti-aliasing for every JComponent
javaw runs a GUI without the console window
8
Basic GUI Programming Steps
in Java
9
declare a container and components
add components to one or more containers
using a layout manager
register event listener(s) with the components
create event listener method(s)
Basic GUI Programming Concepts
in Java
Example: JFrameDemo.java, JFrameDemoTM.java
container : a screen window/applet window/panel that
groups and arranges GUI components
GUI component: an object with visual representation
Swing containers: JFrame, JApplet, JPanel
AWT containers: Frame, Applet, Panel
10
GUI Programming: The Java Approach
event-driven programming
a piece of code (i.e. event handler) is attached to a GUI
component
an event handler is called when an event (e.g. a mouse
click) is activated / fired
The Delegation Event Model in Java
11
processing of an event is delegated to an object (the
listener) in the program
Event-driven Programming
in Java
event source: a GUI component that generates /
fires an event
event: a user interaction
(e.g. a click on the button)
event listener: an object that has encapsulated event
handlers to react to an event
12
Event Handling in Java
the delegation event model
13
- a GUI element “delegates” the processing of an event to another
piece of code (i.e. an event handler)
- the event source generates/fires an event and “sends” it to event
listeners
Event Handling in Java
the delegation event model
- event listeners must be registered with an event source
in order to receive notification
Example: JButtonDemo.java,
JButtonDemo2.java
14
Event Handling in Java
registration of an event listener
- write a class that implements an
<event name>Listener interface
- create an instance of that class (i.e. an event listener)
- register the listener with a GUI component:
add<event name>Listener ( <an event listener> )
15
Event Handling in Java
16
a listener interface has a list of standard event
handlers (i.e. methods)
API documentation
java.awt.event
event classes
listener interfaces
adapter classes
-
Event Handling in Java
different ways of coding the event listeners
- use of another top-level class: JButtonDemo
- anonymous inner classes:
JButtonDemo2, JFrameDemo, JFrameDemo2
- use of an adapter class: JFrameDemo3
JFrameDemoTM2.java uses named inner classes and shows how to
consolidate window closing from two different events.
17
Handling of Mouse Events
MouseListener
mousePressed( ), mouseClicked( )
mouseReleased( ), mouseEntered( )
mouseExited( )
MouseMotionListener
mouseDragged( ), mouseMoved( )
MouseAdapter, MouseMotionAdapter
Example: MouseDemo.java
18
Multiple Event Sources
Example: ActionApplet2.java & .html
one listener for
multiple event
sources
GUI and graphics programming
http://cs.senecac.on.ca/~pliu/appletdemo.html
19
Review
GUI
Java GUI
Components
Event Listeners
Delegates
Event Sources
20