250 likes | 573 Views
GUI Programming in Java. Tim McKenna Seneca@York. 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:
E N D
GUI Programming in Java Tim McKenna Seneca@York
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
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
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
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
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
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.
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
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)
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
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
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
Event Handling in Java • the delegation event model - 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
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> )
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
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.
Handling of Mouse Events • MouseListener mousePressed( ), mouseClicked( ) mouseReleased( ), mouseEntered( ) mouseExited( ) • MouseMotionListener mouseDragged( ), mouseMoved( ) • MouseAdapter, MouseMotionAdapter • Example: MouseDemo.java
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