Class Picture:
import java.awt.*;
public class Picture {
protected int x;
protected int y;
protected int w;
protected int h;
protected Color c;
public Picture (int x, int y, int w, int h, Color c) {
this.x = x;
this.y = y;
this.w = w;
this.h = h;
this.c = c;
}
public void draw(Graphics g) {
// remember the original color
Color saved = g.getColor();
// set the color to a new one
g.setColor(c);
// draw a filled rectangle
g.fillRect(x,y,w,h);
// restore the color:
g.setColor(saved);
}
public boolean isGreen() {
return c == Color.green;
}
}
Test files for class picture:
<HTML>
<APPLET CODE="TestDraw.class" HEIGHT=400 WIDTH=400></APPLET>
</HTML>
import java.awt.*;
import java.applet.*;
import java.util.*;
public class TestDraw extends Applet {
public void paint(Graphics g) {
Color [] colors = {Color.green, Color.blue, Color.yellow};
Color [] mcolors = {Color.magenta, Color.white, Color.green};
Picture [] pics = new Picture[4];
Random r = new Random();
// create 4 pictures:
for (int i = 0; i < 4; ++i) {
int j = 0;
if (i > 1) j = 1;
int c_index = r.nextInt(3);
pics[i] = new Picture((i%2)*200,j*200,200,200,colors[c_index]);
if (pics[i].isGreen())
System.out.println("Happy St. Patricks!");
}
// draw the pictures
for (int i = 0; i < 4; ++i) {
pics[i].draw(g);
}
}
}
Class OvalPicture inherits from Picture:
import java.awt.*;
public class OvalPicture extends Picture{
Color middle;
public OvalPicture(int x, int y, int w, int h, Color c, Color m) {
super(x,y,w,h,c); // using the constructor of the superclass
middle = m;
}
public void draw(Graphics g) {
// remember the original color
Color saved = g.getColor();
// set the color to a new one
g.setColor(c);
// draw a filled rectangle
g.fillOval(x,y,w,h);
g.setColor(middle);
g.fillOval(x + w/4, y + h/4, w/2, h/2);
// restore the color:
g.setColor(saved);
}
// adding a new method:
public boolean hasGreen() {
return c == Color.green || middle == Color.green;
}
}
Test file:
import java.awt.*;
import java.applet.*;
import java.util.*;
public class TestDraw extends Applet {
public void paint(Graphics g) {
Color [] colors = {Color.green, Color.blue, Color.yellow};
Color [] mcolors = {Color.magenta, Color.white, Color.green};
OvalPicture [] pics = new OvalPicture[4];
Random r = new Random();
// create 4 pictures:
for (int i = 0; i < 4; ++i) {
int j = 0;
if (i > 1) j = 1;
int c_index = r.nextInt(3);
int mc_index = r.nextInt(3);
pics[i] = new OvalPicture((i%2)*200,j*200,200,200,colors[c_index],
mcolors[mc_index]);
if (pics[i].hasGreen())
System.out.println("Happy St. Patricks!");
}
for (int i = 0; i < 4; ++i) {
pics[i].draw(g);
}
}
}
Another class that extends Picture:
import java.awt.*;
public class Flag extends Picture{
Color middle;
public Flag(int x, int y, int w, int h, Color c, Color m) {
super(x,y,w,h,c); // using the constructor of the superclass
middle = m;
}
public void draw(Graphics g) {
// remember the original color
Color saved = g.getColor();
// set the color to a new one
g.setColor(c);
// draw a filled rectangle
g.fillRect(x,y,w,h);
g.setColor(middle);
g.fillRect(x, y + y/3, w, h/3);
// restore the color:
g.setColor(saved);
}
// adding a new method:
public boolean hasGreen() {
return c == Color.green || middle == Color.green;
}
}
The test that uses both OvalPicture and Flag. Note that hasGreen()
cannot be used since it's not defined in Picture.
import java.awt.*;
import java.applet.*;
import java.util.*;
public class TestDraw extends Applet {
public void paint(Graphics g) {
Color [] colors = {Color.green, Color.blue, Color.yellow};
Color [] mcolors = {Color.magenta, Color.white, Color.green};
Picture [] pics = new Picture[4];
Random r = new Random();
// create 4 pictures:
for (int i = 0; i < 2; ++i) {
int c_index = r.nextInt(3);
int mc_index = r.nextInt(3);
pics[2*i] = new OvalPicture(0,i*200,200,200,colors[c_index],
mcolors[mc_index]);
pics[2*i+1] = new Flag(200,i*200,200,200,colors[c_index],
mcolors[mc_index]);
//if (pics[i].hasGreen())
//System.out.println("Happy St. Patricks!");
}
for (int i = 0; i < 4; ++i) {
pics[i].draw(g); // the right method is called for each object
}
}
}
This is an example from CSci 1211 course.