Question
Object-Oriented Design and Patterns in Java (the 3rd Edition Chapter 5 ) - Create a directory named as the question number and save the required
Object-Oriented Design and Patterns in Java (the 3rd Edition Chapter 5)
- Create a directory named as the question number and save the required solutions in the directory.
- Each problem comes with an expected tester name. In the directory for a given problem, including the tester and all java classes successfully run this tester.
Exercise 5.4
SliderTetser.java - A slider is a user interface component that allows a user to specify a continuum of values. To be notified of slider movement, you need to attach a class that implements the ChangeListener interface type. Read the API documentation for JSlider and ChangeListener. Implement a program that contains a slider and a car icon. The size of the car should increase or decrease as the slider is moved.
----------------------------------------------------------------
CarIcon.java
import java.awt.*; import java.awt.geom.*; import javax.swing.*; /** An icon that has the shape of a car. */ public class CarIcon implements Icon { /** Constructs a car of a given width. @param width the width of the car */ public CarIcon(int aWidth) { width = aWidth; } /** Changes the width of the car @param width the width of the car */ public void setIconWidth(int aWidth) { width = aWidth; } public int getIconWidth() { return width; } public int getIconHeight() { return width / 2; } public void paintIcon(Component c, Graphics g, int x, int y) { Graphics2D g2 = (Graphics2D)g; Rectangle2D.Double body = new Rectangle2D.Double(x, y + width / 6, width - 1, width / 6); Ellipse2D.Double frontTire = new Ellipse2D.Double(x + width / 6, y + width / 3, width / 6, width / 6); Ellipse2D.Double rearTire = new Ellipse2D.Double(x + width * 2 / 3, y + width / 3, width / 6, width / 6); // the bottom of the front windshield Point2D.Double r1 = new Point2D.Double(x + width / 6, y + width / 6); // the front of the roof Point2D.Double r2 = new Point2D.Double(x + width / 3, y); // the rear of the roof Point2D.Double r3 = new Point2D.Double(x + width * 2 / 3, y); // the bottom of the rear windshield Point2D.Double r4 = new Point2D.Double(x + width * 5 / 6, y + width / 6); Line2D.Double frontWindshield = new Line2D.Double(r1, r2); Line2D.Double roofTop = new Line2D.Double(r2, r3); Line2D.Double rearWindshield = new Line2D.Double(r3, r4); g2.fill(frontTire); g2.fill(rearTire); g2.setColor(Color.red); g2.fill(body); g2.draw(frontWindshield); g2.draw(roofTop); g2.draw(rearWindshield); } private int width; }
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started