Chapter 4 Interface Types and Polymorphism: Graphics, Timer, Animation.

Slides:



Advertisements
Similar presentations
Examples. // A simple Frame with Rectangle Inside import java.awt.*; import javax.swing.*; import java.awt.geom.*; // For Shapes class rectComponent extends.
Advertisements

Graphics You draw on a Graphics object The Graphics object cannot directly be created by your code, instead one is generated when the method paintComponent.
LAB SESSION 7 Graphical user interface Applet fundamentals Methods in applets Execution of an applet Graphics class.
Inner Classes. Nested Classes  An nested class is a class that is defined inside another class.  To this point we have only studied top-level classes.
Chapter 4 (Horstmann’s Book) Interface Types and Polymorphism: Graphics, Timer, Animation Hwajung Lee.
Multithreading : animation. slide 5.2 Animation Animation shows different objects moving or changing as time progresses. Thread programming is useful.
Graphical User Interface Bonus slides Interaction Between Components & Drawing.
Bar Graph Design. Left-side/Right-side mechanical processing creative, abstract reasoning.
CPSC 2100 University of Tennessee at Chattanooga – Fall 2013 Object-Oriented Design & Patterns 2 nd edition Cay S. Horstmann Chapter 4: Interface Types.
Introduction to Java Classes, events, GUI’s. Understand: How to use TextPad How to define a class or object How to create a GUI interface How event-driven.
GUI and Swing, part 2 The illustrated edition. Scroll bars As we have previously seen, a JTextArea has a fixed size, but the amount of text that can be.
Chapter 9 Interfaces and Polymorphism. Chapter Goals To learn about interfaces To be able to convert between class and interface references To understand.
Copyright 2006 by Pearson Education 1 Building Java Programs Supplement 3G: Graphics.
Review CSC 171 FALL 2004 LECTURE 21. Topics Objects and Classes Fundamental Types Graphics and Applets Decisions Iteration Designing Classes Testing and.
Java Review Structure of a graphics program. Computer Graphics and User Interfaces Java is Object-Oriented A program uses objects to model the solution.
Swing Graphics ● Empty Swing containers have no visual appearance except for a background color ● Every JComponent must have a paintComponent method that.
Animation To animate our programs, that is, to have real time interactions where objects move on the screen, we want to call repaint( ) every few milliseconds.
Java Concepts Chapter 2 – Graphical Applications Mr. Smith AP Computer Science A.
1 Interface Types & Polymorphism & introduction to graphics programming in Java.
Design Patterns and Graphical User Interfaces Horstmann ,
Java Programming, 3e Concepts and Techniques Chapter 3 Section 65 – Manipulating Data Using Methods – Java Applet.
CS 151: Object-Oriented Design October 3 Class Meeting Department of Computer Science San Jose State University Fall 2013 Instructor: Ron Mak
1 Principles of Computer Science I Prof. Nadeem Abdul Hamid CSC 120 – Fall 2005 Lecture Unit 5 - Graphics.
Object-Oriented Programming (Java), Unit 19 Kirk Scott 1.
Interfaces & Polymorphism part 2:
CHAPTER 2 Using Objects. Basic Programming Terminology  Computer program process values.  Numbers (digits)  Words (Strings)  These values are different.
1 Event Driven Programs Rick Mercer. 2 So what happens next?  You can layout a real pretty GUI  You can click on buttons, enter text into a text field,
Polymorphism and interfaces Horstmann ch 4. Outline Interface Polymorphism Function object Anonymous class User Interface Action Scope of variables (Large)
MT311 Java Application Development and Programming Languages Li Tak Sing ( 李德成 )
Object-Oriented Programming (Java), Unit 19 Kirk Scott 1.
1 Block1 – unit 2 (The Case study in Budd 5-6).  create a small application that uses the Abstract Windowing Toolkit (AWT)  Swing packages to simulate.
Copyright © 2013 by John Wiley & Sons. All rights reserved. GRAPHICAL USER INTERFACES CHAPTER Slides by Donald W. Smith TechNeTrain.com Final Draft 10/30/11.
Swing GUI Components You can create graphics components to place on your applet using classes available in the Swing package ( javax.swing ) Class names.
COMP 321 Week 2. Outline Event-Driven Programming Events, Event Sources, Event Listeners Button and Timer Events Mouse Events, Adapters.
Creating a GUI with JFC/Swing. What are the JFC and Swing? JFC –Java Foundation Classes –a group of features to help people build graphical user interfaces.
CS-1020 Dr. Mark L. Hornick 1 Event-Driven Programming.
1 GUIs, Layout, Drawing Rick Mercer. 2 Event-Driven Programming with Graphical user Interfaces  Most applications have graphical user interfaces (GUIs)
Graphics Concepts CS 2302, Fall /17/20142 Drawing in Android.
CHAPTER 10 EVENT HANDLING. CHAPTER GOALS To understand the Java event model To install mouse and action listeners To accept mouse and text input To display.
CS 151: Object-Oriented Design October 1 Class Meeting Department of Computer Science San Jose State University Fall 2013 Instructor: Ron Mak
1 Event Driven Programs with a Graphical User Interface Rick Mercer.
1 Event Driven Programs Rick Mercer. 2 So what happens next?  You can layout a real pretty GUI  You can click on buttons, enter text into a text field,
1 Drawing C Sc 335 Object-Oriented Programming and Design Rick Mercer.
Chapter 10 - Writing Graphical User Interfaces1 Chapter 10 Writing Graphical User Interfaces.
Swing GUI Components So far, we have written GUI applications which can ‘ draw ’. These applications are simple, yet typical of all Java GUI applications.
Lesson 28: More on the GUI button, frame and actions.
5-1 GUIs and Events Rick Mercer. 5-2 Event-Driven Programming with Graphical user Interfaces  Most applications have graphical user interfaces to respond.
Basic Graphics 03/03/16 & 03/07/16 Imagine! Java: Programming Concepts in Context by Frank M. Carrano, (c) Pearson Education - Prentice Hall, 2010.
Break Time! Graphical User Interface (GUI) NO EXAM….ONLY PROJECT!
Chapter 4 Interface Types and Polymorphism Part 2.
Chapter 4 Interfaces and Polymorphism Object-Oriented Design & Patterns Cay S. Horstmann.
Interface types and Polymorphism
ITEC324 Principle of CS III
“Form Ever Follows Function” Louis Henri Sullivan
Java Graphics CS 2511.
Chapter 4 Interface Types and Polymorphism Part 2
Chapter 4 Interface Types and Polymorphism Part 1
Ellen Walker Hiram College
Graphical user interface-based programming
Constructors, GUI’s(Using Swing) and ActionListner
Building Java Programs
Building Java Programs
Building Java Programs
Building Java Programs
CiS 260: App Dev I Chapter 6: GUI and OOD.
עקרונות תכנות מונחה עצמים תרגול 7: אנימציה
ITEC324 Principle of CS III
Inner Classes.
Corresponds with Chapter 5
Chapter 4 Interface Types and Polymorphism Part 1
Presentation transcript:

Chapter 4 Interface Types and Polymorphism: Graphics, Timer, Animation

Why? Interfaces  A class defines a set of operations (the interface) and statements (implementation).  Separating the interface concept from that of a class can help in the development of “generic” reusable code. Polymorphism  Polymorphism: Ability to select different methods according to actual object type.  Multiple classes can implement the same interface type so that it is possible to operate on a mixture of objects from any of these classes.

The Icon Interface Type public interface Icon { int getIconWidth(); int getIconHeight(); void paintIcon(Component c, Graphics g, int x, int y); }

Shape Interface Type & Polymorphism (1) paintIcon method receives graphics context of type Graphics Actually a Graphics2D object in modern Java versions public void paintIcon(Component c, Graphics g, int x, int y) { Graphics2D g2 = (Graphics2D) g;... } Can draw any object that implements Shape interface Shape s =...; g2.draw(s);

Shape Interface Type & Polymorphism (2) Drawing Rectangles and Ellipses Rectangle2D.Double constructed with  top left corner  width  height g2.draw(new Rectangle2D.Double(x, y, width, height)); For Ellipse2D.Double, specify bounding box

Shape Interface Type & Polymorphism (3) Drawing Ellipses

Shape Interface Type & Polymorphism (4) Drawing Line Segments Point2D.Double is a point in the plane Line2D.Double joins to points Point2D.Double start = new Point2D.Double(x1, y1); Point2D.Double end = new Point2D.Double(x2, y2); Shape segment = new Line2D.Double(start, end); g2.draw(segment);

Shape Interface & Polymorphism (5) Relationship Between Shape Interface and Classes

Shape Interface Type & Polymorphism (6) Drawing Text g2.drawString(text, x, y); x, y are base point coordinates

Shape Interface Type & Polymorphism (6) Filling Shapes Fill interior of shape g2.fill(shape); Set color for fills or strokes: g2.setColor(Color.red); Program that draws car Ch4/icon3/CarIcon.java Ch4/icon3/CarIcon.java

Anonymous Classes No need to name objects that are used only once. Collections.sort(students, new StudentComparatorByName()); No need to name classes that are used only once. Comparator comp = new Comparator () { public int compare(Student student1, Student student2) { return student1.getName().compareTo(student2.getName()); } };

Factory Methods Anonymous class is commonly used in factory methods: public class Student { public static Comparator comparatorByName() { return new Comparator () { public int compare(Student s1, Student s2) {... } }; } } Neat arrangement if multiple comparators make sense (by name, by grade,...)

User Interface Action (1) Ch4/action1/ActionTest.java

User Interface Action (2) Accessing Variables from Enclosing Scope Method of Inner classes can access variables that are visible in the enclosing scope  e.g. actionPerformed method accesses the textField variable of the enclosing main method If an inner class accesses a local variable from an enclosing scope, the variable must be declared as final. final JTextField textField = new TextField(Field_WIDTH);

User Interface Action (3) To construct multiple objects of the same anonymous class, you must instantiate the anonymous class in a helper method (a factory method) and then call it multiple times. Note: you should declare parameters final Debug the following Code public static ActionListener createGreetingButtonListener(String message) { return new ActionListener() { public void actionPerformed(ActionEvent event) { textField.setText(message); } }; }

User Interface Action (4) Answer: public static ActionListener createGreetingButtonListener(final String message) { return new ActionListener() { public void actionPerformed(ActionEvent event) { textField.setText(message); } }; }

Public class ActionTest { Public static void main(String[] args) { … textField = new JTextField(FIELD_SIZE); helloButton.addActionListener( creatGreetingButtonListener(“Hello, World !”)); goodbyeButton. addActionListener( creatGreetingButtonListener(“Goodbye, World !”)); … } // the helper method in the previous slide places here } User Interface Action (5)

Timers Javax.swing package Timer generates a sequence of action events spaced apart at equal time interval, and notifies a designated action listener. ActionListener listener =...; final int DELAY = 1000; // 1000 millisec = 1 sec Timer t = new Timer(DELAY, listener); t.start();  The start method returns immediately. A new thread of execution is started that issues action events in the specified frequency.

Ch4/timer/TimerTester.java Ch4/timer/TimerTester.java

Designing an Interface Type (cont.) Public class ShapeIcon implements Icon { Public void paintIcon(Component c, Graphics g, int x, int y) { Paint the shape } … }

Designing an Interface Type (cont.) ShapeIcon icon = new ShapeIcon(…); JLabel label = new JLabel(icon); ActionListener listener = new ActionListener() { public void actionPerformed(ActionEvent event) { move the shape label.repaint(); } };

Designing an Interface Type (cont.) Use timer to move car shapes Draw car with CarShape Two responsibilities:  Draw shape  Move shape Define new interface type MoveableShape : we can decoupled the animation from the car shape.

CRC Card for the MoveableShape Interface Type

Designing an Interface Type Name the methods to conform to standard library public interface MoveableShape { void draw(Graphics2D g2); void translate(int dx, int dy); } CarShape class implements MoveableShape public class CarShape implements MoveableShape { public void translate(int dx, int dy) { x += dx; y += dy; }... }

Implementing the Animation Label contains icon that draws shape Timer action moves shape, calls repaint on label Label needs Icon, we have MoveableShape Supply ShapeIcon adapter class ShapeIcon.paintIcon calls MoveableShape.draw

Implementing the Animation

Ch4/animation/MoveableShape.java Ch4/animation/ShapeIcon.java Ch4/animation/AnimationTester.java Ch4/animation/AnimationTester.java Ch4/animation/CarShape.java