[英]Is it possible to have an array or a list of geometric primitives in Java?
考虑使用一组原始几何形状绘制图像。 我能想到的解决方案是将项目组合成一个数组,对其进行迭代并调用draw方法:
Object[] elements = {(new Ellipse2D.Double(200, 200, 40, 40)),
(new Line2D.Double(10, 10, 100, 100)),
(new Rectangle2D.Double(50,50,90,90))};
for (int j=0; j<elements.length; j++){
g2d.draw(elements[j]);
}
如果它们都属于同一个父 class,这应该是可能的。 但我无法确认是否存在这样的 class。 您能否澄清一下这个 object class 或者可能有另一种方法来制作形状的数组/列表?
编辑:谢谢大家的及时回答::)
第一步是查看您的一种类型的 API 文档,例如Ellipse2D.Double
。
我们可以看到它扩展了Ellipse2D
,点击它会得到RectangularShape
。 这列出了(直接)子类,但Line2D
不在其中。 你想要界面Shape
,你就完成了。
或者,查看Graphics2D.draw
方法并观察它声明参数为Shape
。
您的编辑器/IDE 也可以更直接地提供此信息。
class java.awt.Graphics2D的绘制方法以java.awt.Shape接口为参数。
java.awt.Shape javadoc 包含:
所有已知的实现类:
Arc2D, Arc2D.Double, Arc2D.Float, 面积, BasicTextUI.BasicCaret, CubicCurve2D, CubicCurve2D.Double, CubicCurve2D.Float, DefaultCaret, Ellipse2D, Ellipse2D.Double, Ellipse2D.Float, GeneralPath, Line2D, Line2D.Double, Line2D.Float, Path2D, Path2D.Double, Path2D.Float, Polygon, QuadCurve2D, QuadCurve2D.Double, QuadCurve2D.Float, Rectangle, Rectangle2D, Rectangle2D.Double, Rectangle2D.Float, RectangularShape, RoundRectangle2D, RoundRectangle2D.Double, RoundRectangle2D.Float
所以以下完全符合您的需求
java.awt.Shape[] elements = {
new Ellipse2D.Double(200, 200, 40, 40),
new Line2D.Double(10, 10, 100, 100),
new Rectangle2D.Double(50, 50, 90, 90)};
编辑:修复评论添加
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.