图形和 Graphics2D 有什么区别?
Graphics2D是否扩展了Graphics?
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawRect(25, 25, 20, 20); //use Graphics to paint rectangle
Graphics2D g2 =(Graphics2D)g;
g2.drawRect(0, 0, 20, 20); // use Graphics2D to paint rectangle
}
答案 0 :(得分:15)
图形本身是abstract class
,因此您无法创建其实例。它只定义了一些接口和一些功能,因此它可以被其他类扩展。
因此即使Graphics g
用作paintComponent
中的参数,也不仅仅是Graphics
。标准java库只有两个扩展类:DebugGraphics, Graphics2D
,因此您使用的Graphics g
Graphics2D
实例存储在Graphics g
中。
如果不是,则行Graphics2D g2 =(Graphics2D)g;
将以错误结束。