16
GUI Programming in Java Tim McKenna Seneca@York

Gu iintro(java)

Embed Size (px)

Citation preview

Page 1: Gu iintro(java)

GUI Programming in Java

Tim McKennaSeneca@York

Page 2: Gu iintro(java)

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

Page 3: Gu iintro(java)

GUI Design Concepts

a wealth of information creates a poverty of attention- Herbert Simon

Principles of good GUI Design IBM's Design concepts Saul Greenberg's HCI pages Tim's HCI notes

Page 4: Gu iintro(java)

GUI Programming Concepts in Java

Java GUI ("Swing") has components Windows GUI has controls Unix GUI has widgets examples: labels, buttons, check boxes, radio

buttons, text input boxes, pull down lists Java Swing components: JLabel, JButton,

JCheckBox, JRadioButton, JTextField, JTextArea, JComboBox

Page 5: Gu iintro(java)

Java GUI history: the AWT

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

Page 6: Gu iintro(java)

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

Page 7: Gu iintro(java)

Swing Components in Java

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.

Page 8: Gu iintro(java)

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

e.g. HelloWorldSwing.java

Page 9: Gu iintro(java)

Basic GUI Programming Stepsin Java

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)

Page 10: Gu iintro(java)

Basic GUI Programming Concepts in Java

Example: JFrameDemoTM.java, JFrameDemoTM2.java, JFrameDemo.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

Page 11: Gu iintro(java)

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

• processing of an event is delegated to an object (the listener) in the program

Page 12: Gu iintro(java)

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 implemented event handlers to react to an event

Page 13: Gu iintro(java)

Event Handling in Java

the delegation event model- event listeners must be registered with an event

source in order to receive notification

Page 14: Gu iintro(java)

Event Handling in Java

registration of an event listener - write a class that implements an

[event type]Listener interface - create

an instance of that class (i.e. an event listener)

- register the listener with a GUI component:

add[event type]Listener ( <an event listener> )

Page 15: Gu iintro(java)

Event Handling in Java

a listener interface has a list of standard event handlers (i.e. methods)

API documentation - java.awt.event - event classes - listener interfaces - adapter classes

Page 16: Gu iintro(java)

Event Handling in Java

different ways of coding the event listeners

JFrameDemoTM.java uses named inner classes. JFrameDemoTM2.java uses named inner classes and shows how

to consolidate window closing from two different events. JFrameDemo.java does not use inner classes.