Java is an <i>object-oriented</i> programming language
<ul>
<li>. . .</li>
<li>. . .</li>
<li>. . .</li>
</ul>
<img src="hamster.jpeg" width="640" height="480"
alt="A photo of Harry, the horrible hamster" />
<a href="http://java.sun.com>Java</a> is an . . .
<applet code="HamsterApplet.class"
width="640" height="480">
class MyApplet extends Applet
{
public void paint(Graphics g)
{
Graphics2D g2 = (Graphics2D)g;
// add drawing operations
. . .
}
}
1 | import java.applet.Applet; |
2 | import java.awt.Graphics; |
3 | import java.awt.Graphics2D; |
4 | import java.awt.Rectangle; |
5 | |
6 | /** |
7 | An applet that draws two rectangles. |
8 | */ |
9 | public class RectangleApplet extends Applet |
10 | { |
11 | public void paint(Graphics g) |
12 | { |
13 | // recover Graphics2D |
14 | |
15 | Graphics2D g2 = (Graphics2D)g; |
16 | |
17 | // construct a rectangle and draw it |
18 | |
19 | Rectangle cerealBox = new Rectangle(5, 10, 20, 30); |
20 | g2.draw(cerealBox); |
21 | |
22 | // move rectangle 15 units sideways and 25 units down |
23 | |
24 | cerealBox.translate(15, 25); |
25 | |
26 | // draw moved rectangle |
27 | |
28 | g2.draw(cerealBox); |
29 | } |
30 | } |
import java.awt.geom.Ellipse2D; // no .Double
Point2D.Double from = new Point2D.Double(x1, y1);
Point2D.Double to = new Point2D.Double(x2, y2);
Line2D.Double segment = new Line2D.Double(from, to);
g2.setStroke(new BasicStroke(4.0F)); // 4 pixels
1 | import java.applet.Applet; |
2 | import java.awt.Graphics; |
3 | import java.awt.Graphics2D; |
4 | import java.awt.Rectangle; |
5 | |
6 | /** |
7 | An applet that draws two rectangles. |
8 | */ |
9 | public class RectangleApplet extends Applet |
10 | { |
11 | public void paint(Graphics g) |
12 | { |
13 | // recover Graphics2D |
14 | |
15 | Graphics2D g2 = (Graphics2D)g; |
16 | |
17 | // construct a rectangle and draw it |
18 | |
19 | Rectangle cerealBox = new Rectangle(5, 10, 20, 30); |
20 | g2.draw(cerealBox); |
21 | |
22 | // move rectangle 15 units sideways and 25 units down |
23 | |
24 | cerealBox.translate(15, 25); |
25 | |
26 | // draw moved rectangle |
27 | |
28 | g2.draw(cerealBox); |
29 | } |
30 | } |
1 | import java.awt.Graphics2D; |
2 | import java.awt.geom.Ellipse2D; |
3 | import java.awt.geom.Line2D; |
4 | import java.awt.geom.Point2D; |
5 | import java.awt.geom.Rectangle2D; |
6 | |
7 | /** |
8 | A car shape that can be positioned anywhere on the screen. |
9 | */ |
10 | public class Car |
11 | { |
12 | /** |
13 | Constructs a car with a given top left corner |
14 | @param x the x coordinate of the top left corner |
15 | @param y the y coordinate of the top left corner |
16 | */ |
17 | public Car(double x, double y) |
18 | { |
19 | xLeft = x; |
20 | yTop = y; |
21 | } |
22 | |
23 | /** |
24 | Draws the car |
25 | @param g2 the graphics context |
26 | */ |
27 | public void draw(Graphics2D g2) |
28 | { |
29 | Rectangle2D.Double body |
30 | = new Rectangle2D.Double(xLeft, yTop + 10, 60, 10); |
31 | Ellipse2D.Double frontTire |
32 | = new Ellipse2D.Double(xLeft + 10, yTop + 20, 10, 10); |
33 | Ellipse2D.Double rearTire |
34 | = new Ellipse2D.Double(xLeft + 40, yTop + 20, 10, 10); |
35 | |
36 | // the bottom of the front windshield |
37 | Point2D.Double r1 |
38 | = new Point2D.Double(xLeft + 10, yTop + 10); |
39 | // the front of the roof |
40 | Point2D.Double r2 |
41 | = new Point2D.Double(xLeft + 20, yTop); |
42 | // the rear of the roof |
43 | Point2D.Double r3 |
44 | = new Point2D.Double(xLeft + 40, yTop); |
45 | // the bottom of the rear windshield |
46 | Point2D.Double r4 |
47 | = new Point2D.Double(xLeft + 50, yTop + 10); |
48 | |
49 | Line2D.Double frontWindshield |
50 | = new Line2D.Double(r1, r2); |
51 | Line2D.Double roofTop |
52 | = new Line2D.Double(r2, r3); |
53 | Line2D.Double rearWindshield |
54 | = new Line2D.Double(r3, r4); |
55 | |
56 | g2.draw(body); |
57 | g2.draw(frontTire); |
58 | g2.draw(rearTire); |
59 | g2.draw(frontWindshield); |
60 | g2.draw(roofTop); |
61 | g2.draw(rearWindshield); |
62 | } |
63 | |
64 | private double xLeft; |
65 | private double yTop; |
66 | } |
1 | import java.applet.Applet; |
2 | import java.awt.Color; |
3 | import java.awt.Graphics; |
4 | import java.awt.Graphics2D; |
5 | import java.awt.Rectangle; |
6 | import javax.swing.JOptionPane; |
7 | |
8 | /** |
9 | An applet that lets a user choose a color by specifying |
10 | the fractions of red, green, and blue. |
11 | */ |
12 | public class ColorApplet extends Applet |
13 | { |
14 | public ColorApplet() |
15 | { |
16 | String input; |
17 | |
18 | // ask the user for red, green, blue values |
19 | |
20 | input = JOptionPane.showInputDialog("red:"); |
21 | float red = Float.parseFloat(input); |
22 | |
23 | input = JOptionPane.showInputDialog("green:"); |
24 | float green = Float.parseFloat(input); |
25 | |
26 | input = JOptionPane.showInputDialog("blue:"); |
27 | float blue = Float.parseFloat(input); |
28 | |
29 | fillColor = new Color(red, green, blue); |
30 | } |
31 | |
32 | public void paint(Graphics g) |
33 | { |
34 | Graphics2D g2 = (Graphics2D)g; |
35 | |
36 | // select color into graphics context |
37 | |
38 | g2.setColor(fillColor); |
39 | |
40 | // construct and fill a square whose center is |
41 | // the center of the window |
42 | |
43 | Rectangle square = new Rectangle( |
44 | (getWidth() - SQUARE_LENGTH) / 2, |
45 | (getHeight() - SQUARE_LENGTH) / 2, |
46 | SQUARE_LENGTH, |
47 | SQUARE_LENGTH); |
48 | |
49 | g2.fill(square); |
50 | } |
51 | |
52 | private static final int SQUARE_LENGTH = 100; |
53 | |
54 | private Color fillColor; |
55 | } |
56 |
1 | import java.applet.Applet; |
2 | import java.awt.Graphics; |
3 | import java.awt.Graphics2D; |
4 | import java.awt.geom.Ellipse2D; |
5 | import java.awt.geom.Line2D; |
6 | import javax.swing.JOptionPane; |
7 | |
8 | /** |
9 | An applet that computes and draws the intersection points |
10 | of a circle and a line. |
11 | */ |
12 | public class IntersectionApplet extends Applet |
13 | { |
14 | public IntersectionApplet() |
15 | { |
16 | String input |
17 | = JOptionPane.showInputDialog("x:"); |
18 | x = Integer.parseInt(input); |
19 | } |
20 | |
21 | public void paint(Graphics g) |
22 | { |
23 | Graphics2D g2 = (Graphics2D)g; |
24 | |
25 | double r = 100; // the radius of the circle |
26 | |
27 | // draw the circle |
28 | |
29 | Ellipse2D.Double circle |
30 | = new Ellipse2D.Double(0, 0, 2 * RADIUS, 2 * RADIUS); |
31 | g2.draw(circle); |
32 | |
33 | // draw the vertical line |
34 | |
35 | Line2D.Double line |
36 | = new Line2D.Double(x, 0, x, 2 * RADIUS); |
37 | g2.draw(line); |
38 | |
39 | // compute the intersection points |
40 | |
41 | double a = RADIUS; |
42 | double b = RADIUS; |
43 | |
44 | double root = Math.sqrt(RADIUS * RADIUS - (x - a) * (x - a)); |
45 | double y1 = b + root; |
46 | double y2 = b - root; |
47 | |
48 | // draw the intersection points |
49 | |
50 | LabeledPoint p1 = new LabeledPoint(x, y1); |
51 | LabeledPoint p2 = new LabeledPoint(x, y2); |
52 | |
53 | p1.draw(g2); |
54 | p2.draw(g2); |
55 | } |
56 | |
57 | private static final double RADIUS = 100; |
58 | private double x; |
59 | } |
1 | import java.applet.Applet; |
2 | import java.awt.Graphics; |
3 | import java.awt.Graphics2D; |
4 | import java.awt.geom.Line2D; |
5 | |
6 | /** |
7 | This applet draws a chart of the average monthly |
8 | temperatures in Phoenix, AZ. |
9 | */ |
10 | public class ChartApplet extends Applet |
11 | { |
12 | public void paint(Graphics g) |
13 | { |
14 | Graphics2D g2 = (Graphics2D)g; |
15 | |
16 | month = 1; |
17 | |
18 | drawBar(g2, JAN_TEMP); |
19 | drawBar(g2, FEB_TEMP); |
20 | drawBar(g2, MAR_TEMP); |
21 | drawBar(g2, APR_TEMP); |
22 | drawBar(g2, MAY_TEMP); |
23 | drawBar(g2, JUN_TEMP); |
24 | drawBar(g2, JUL_TEMP); |
25 | drawBar(g2, AUG_TEMP); |
26 | drawBar(g2, SEP_TEMP); |
27 | drawBar(g2, OCT_TEMP); |
28 | drawBar(g2, NOV_TEMP); |
29 | drawBar(g2, DEC_TEMP); |
30 | } |
31 | |
32 | /** |
33 | Draws a bar for the current month and increments |
34 | the month. |
35 | @param g2 the graphics context |
36 | @param temperature the temperature for the month |
37 | */ |
38 | public void drawBar(Graphics2D g2, int temperature) |
39 | { |
40 | Line2D.Double bar |
41 | = new Line2D.Double(xpixel(month), ypixel(0), |
42 | xpixel(month), ypixel(temperature)); |
43 | |
44 | g2.draw(bar); |
45 | |
46 | month++; |
47 | } |
48 | |
49 | /** |
50 | Converts from user coordinates to pixel coordinates |
51 | @param xuser an x-value in user coordinates |
52 | @return the corresponding value in pixel coordinates |
53 | */ |
54 | public double xpixel(double xuser) |
55 | { |
56 | return (xuser - XMIN) * (getWidth() - 1) / (XMAX - XMIN); |
57 | } |
58 | |
59 | /** |
60 | Converts from user coordinates to pixel coordinates |
61 | @param yuser a y-value in user coordinates |
62 | @return the corresponding value in pixel coordinates |
63 | */ |
64 | public double ypixel(double yuser) |
65 | { |
66 | return (yuser - YMAX) * (getHeight() - 1) / (YMIN - YMAX); |
67 | } |
68 | |
69 | private static final int JAN_TEMP = 11; |
70 | private static final int FEB_TEMP = 13; |
71 | private static final int MAR_TEMP = 16; |
72 | private static final int APR_TEMP = 20; |
73 | private static final int MAY_TEMP = 25; |
74 | private static final int JUN_TEMP = 31; |
75 | private static final int JUL_TEMP = 33; |
76 | private static final int AUG_TEMP = 32; |
77 | private static final int SEP_TEMP = 29; |
78 | private static final int OCT_TEMP = 23; |
79 | private static final int NOV_TEMP = 16; |
80 | private static final int DEC_TEMP = 12; |
81 | |
82 | private static final double XMIN = 1; |
83 | private static final double XMAX = 12; |
84 | private static final double YMIN = 0; |
85 | private static final double YMAX = 40; |
86 | |
87 | private int month; |
88 | } |
89 | |
90 |