使用Path2D类绘制三角形时遇‘无法实例化Path2D类型’错误求助
问题原因及解决方案
核心问题
Path2D是Java中的抽象类,抽象类无法直接通过new关键字实例化,这就是你触发“Cannot instantiate the type Path2D”报错的根本原因。
修复方案
你需要使用Path2D的具体实现子类:Path2D.Double(默认用双精度浮点存储坐标)或Path2D.Float(单精度浮点存储,内存占用更小),二者API完全一致,仅精度有区别。
修改关键代码
将创建路径对象的代码替换为:
Path2D path = new Path2D.Double(); // 或单精度版本:Path2D path = new Path2D.Float();
完整修复后的代码
package houseGoesVroom; import java.awt.Graphics2D; import java.awt.geom.*; public class HousePlans { //instance variables private int x; private int y; //constructor public HousePlans(int cornerX, int cornerY) { x = cornerX; y = cornerY; } //draw method public void draw(Graphics2D g2) { int r = (int) (256 * Math.random()); int g = (int) (256 * Math.random()); int b = (int) (256 * Math.random()); g2.fillRect(0, 40, 80, 120); // 使用Path2D的具体子类实例化 Path2D path = new Path2D.Double(); path.moveTo(0,40); path.lineTo(40,0); path.lineTo(80, 40); path.closePath(); g2.draw(path); } }
额外提示
你代码中定义的x和y实例变量目前未在draw方法中使用,当前绘制的图形都是固定坐标。如果需要根据构造函数传入的cornerX和cornerY调整房屋位置,可以给所有绘制坐标加上x和y的偏移量,比如path.moveTo(x, y+40)。
内容的提问来源于stack exchange,提问作者Nolan
相关产品推荐
相关产品推荐

