30
Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng [email protected]

Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng [email protected]

Embed Size (px)

Citation preview

Page 1: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Graphics in JavaDr. Andrew Wallace PhD BEng(hons) EurIng

[email protected]

Page 2: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Overview

• Events

• Graphics

• Swing

• Model – view – controller

Page 3: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Events

• Event driven

• Event handler

• Action Listener

Component

Display

Event

Page 4: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Events

State

State

EventEvent

Page 5: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Events

State State

Page 6: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Events

switch(m_nState)

{

case STATE_A:

handleStateA();

case STATE_B:

handleStateB();

}

Page 7: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Events

private class MyEventListener implements ActionListener

//add listener

<component>.addActionListener(this);

public void actionPerformed(ActionEvent e)

{

}

Page 8: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Events

• Multiple listeners per event

• Multiple events per listener

• Need to test for event source• EventObject has method getSource which returns an Object

Page 9: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Events

• Design event listeners to be fast• Minimise operations• Execute in update thread

• Event types:• Low level (mouse or key events)• Semantic (all other events)

Page 10: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Events

• Not all interface events are of interest

• Adapters• Implements listener’s methods with empty methods

• Inherited and use only those of interest• Or use inner classes

Page 11: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Quiz

• What does an event signify in Java GUIs?

• How does event driven GUIs work?

Page 12: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Graphics

• AWT, Swing and JavaFX

• Abstract Windows Tool Kit• Old version • java.awt

• Swing• Newer version• More sophisticated• javax.swing

• JavaFX• Even newer!

Page 13: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Graphics

• Swing builds upon AWT• public abstract class JComponent extends Container implements

Serializable

• System independent

• Written in Java

• Executes in own thread

• Restrictions on updating screen• Revalidate and repaint

Page 14: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Parts of Swing

• Containers• JFrame (extends awt Frame)• JPanel (extends JComponent)• JScrollPane (extends JComponent)

• Components• Jbutton• JTextArea• JMenu

Containers

Page 15: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Parts of Swing

• Layout managers

• BoxLayout (swing)• Allows for components to be laid out vertically or horizontally

• BoarderLayout (awt)• North, south, east, west and centre

• GridLayout (awt)• Grid squares with coords

Page 16: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Quiz

• How does swing differ from AWT?

• What are the two main parts of Swing?

Page 17: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Model – View - Controller

• Design method for GUIs

• Decouple data access / logic from display

• Model• Data and rules

• View• Display

• Controller• Translate user input

Page 18: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Model – View - Controller

Controller

Model

View

UI events

Change event

Model change events

Page 19: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Model – View - Controller

• Implementation

• Viewer registers as a listener on the model• Push model• Model doesn’t know of the viewer (just broadcasts events)

• Bind the controller to the model• User actions invoke controller methods

Page 20: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Model – View - Controller

Controller

ModelView

Page 21: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Model – View - Controller

• Implementation

• Viewer registers with the controller as a listener on the model• Events sent through the controller

• Bind the controller to the model• User actions invoke controller methods

• Increases the decoupling

Page 22: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Model – View - Controller

public class MyModel extends AbstractModel

{

//Data

//Reset model

//Access methods

}

Page 23: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Model – View - Controller

public abstract class AbstractModel

{

protected PropertyChangeSupport m_PropChangSup;

//add property change listener

//remove property change listener

//fire property change listener

}

Page 24: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Model – View - Controller

public abstract class AbstractController implements PropertyChangeListener

{

//arrays holding views and models

//add / remove model

//add / remove view

//property change method to send event

//set model property method

}

Page 25: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Model – View - Controller

• Method method = model.getClass().getMethod(“set” + m_strPropertyName, new Class[] {newValue.getClass()});

• method.invoke(model, newValue);

Page 26: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Model – View - Controller

public class DefaultController extends AbstractController

{

//change element functions

}

Page 27: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Model – View - Controller

public class MyView extends view

{

//set the controller

//model property change method

//event handlers. Send events to controller

}

Page 28: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Model – View - Controller

• Problem:

• Infinite loops

• Autonomous swing components can up date themselves• Check values of update and current state

Page 29: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Quiz

• What does the parts of MVC do?

• How does MVC decouple objects?

Page 30: Graphics in Java Dr. Andrew Wallace PhD BEng(hons) EurIng andrew@cs.umu.se

Questions?