用java实现以下功能画图软件可以绘制图案:线条,矩形 两种图案都共同有属性:开始坐标X,开始坐标Y共同有绘制的方法:但是不同的图案输出不同的内容线条独有的属性:终点坐标X,终点坐标Y 矩形独有的属性:长度,宽度 要求使用集合对象的方式存储. 循环调用绘制的方法输出所有的内容。
时间: 2024-09-25 16:06:49 浏览: 28
在Java中,你可以使用`java.awt.Graphics2D`类以及`java.awt.Shape`接口来创建基本的图形,如线条和矩形。为了满足这个需求,我们可以创建两个抽象类,`ShapeBase`作为所有形状的基础,并定义通用的属性和绘制方法。然后,`Line`和`Rectangle`分别继承自`ShapeBase`并添加各自的特有属性。
首先,定义`ShapeBase`抽象类:
```java
import java.awt.geom.Line2D;
import java.awt.geom.Rectangle2D;
public abstract class ShapeBase {
protected int startX;
protected int startY;
public ShapeBase(int startX, int startY) {
this.startX = startX;
this.startY = startY;
}
// 绘制方法,基础版
public void draw(Graphics2D g2d) {
g2d.draw(getShape());
}
protected abstract Shape getShape();
}
```
接着,创建具体的形状类:
```java
class Line extends ShapeBase {
private int endX;
public Line(int startX, int startY, int endX) {
super(startX, startY);
this.endX = endX;
}
@Override
protected Shape getShape() {
return new Line2D.Double(startX, startY, endX, startY); // 线条绘制为从起点到终点
}
}
class Rectangle extends ShapeBase {
private int length;
private int width;
public Rectangle(int startX, int startY, int length, int width) {
super(startX, startY);
this.length = length;
this.width = width;
}
@Override
protected Shape getShape() {
return new Rectangle2D.Float(startX, startY, length, width); // 矩形绘制为指定大小和位置
}
}
```
现在,你可以使用集合(如ArrayList)存储这些形状实例,并通过循环调用`draw`方法:
```java
import java.util.ArrayList;
public class DrawingApp {
public static void main(String[] args) {
ArrayList<ShapeBase> shapes = new ArrayList<>();
shapes.add(new Line(0, 0, 100, 50)); // 线段
shapes.add(new Rectangle(100, 0, 200, 100)); // 矩形
Graphics2D g2d = ... // 获取Graphics2D实例,假设它来自JFrame或其他图形环境
for (ShapeBase shape : shapes) {
shape.draw(g2d);
}
}
}
```
阅读全文