CS 145 Lecture 25 – Shape Plotter
Agenda
- program this
- a Point class
- the problem with arrays
- a growable array of Points
- ArrayList
Program This
You have:
- A list of points/vertices of a polygon.
- The ability to draw lines.
How do you draw the polygon?
Code
Point.java
package prefinal;
public class Point {
private int x;
private int y;
public Point(int x,
int y) {
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
}
ZaboomafuCanvas.java
package prefinal;
import java.awt.Graphics;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ZaboomafuCanvas extends JPanel {
private GrowablePointArray points;
public ZaboomafuCanvas(GrowablePointArray points) {
this.points = points;
}
protected void paintComponent(Graphics g) {
for (int i = 0; i < points.size() - 1; ++i) {
drawLineBetween(g, points.get(i), points.get(i + 1));
}
drawLineBetween(g, points.get(0), points.get(points.size() - 1));
}
private void drawLineBetween(Graphics g,
Point a,
Point b) {
g.drawLine(a.getX(), a.getY(), b.getX(), b.getY());
}
public static void main(String[] args) throws FileNotFoundException {
JFrame frame = new JFrame();
// Point[] points = {
// new Point(50, 100),
// new Point(100, 100),
// new Point(75, 0),
// };
Scanner in = new Scanner(new File("/home/user/rectangle.txt"));
// int nPoints = 0;
// Point[] points = new Point[
GrowablePointArray points = new GrowablePointArray();
while (in.hasNextInt()) {
int x = in.nextInt();
int y = in.nextInt();
Point point = new Point(x, y);
// points[nPoints] = point;
// ++nPoints;
points.add(point);
}
frame.add(new ZaboomafuCanvas(points));
frame.setSize(200, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
Haiku
Hide that ugly stuff.
The less you see the better.
Bologna’s that way.
The less you see the better.
Bologna’s that way.