我正在尝试从文件中读取坐标并使用它们来使用这段代码绘制点:
while(scan.hasNextLine()){
if(scan.next().equals("i")){
Point2D.Double point = new Point2D.Double(scan.nextDouble(), scan.nextDouble());
g2.draw(point);
}
}
然而,当我这样做时,我收到以下错误:
Map.java:43: error: method draw in class Graphics2D cannot be applied to given
types;
g2.draw(point);
^
required: Shape
found: Double
reason: actual argument Double cannot be converted to Shape by method
invocation conversion
1 error
我不明白为什么会这样。如果我将两个双精度作为参数传递给Point2D.Double的构造函数,它应该构造一个Point2D Shape,而不是一个double,是正确的吗?
答案 0 :(得分:2)
java.awt.geom.Point2D.Double
未实现java.awt.Shape
,因此您无法将其用作Graphics2D.draw
的参数。最简单的方法可能是使用Rectangle2D.Double
,如下所示:
Rectangle2D.Double rect = new Rectangle2D.Double(point.x - 0.5, point.y - 0.5, 1, 1);`
这为您提供了一个以单位尺寸为中心点位置的“点”。