java-为什么Swing默认使用“ Graphics”而不是“ Graphics2D”?

如果Graphics2D中还包含所有Graphics,为什么它们不默认为Graphics2D?
我似乎几乎总是在所有绘画替代中都投射/创建Graphics2D对象.

@Override
public void paintComponent(Graphics paramGraphics){
   super.paintComponent(paramGraphics);
   Graphics2D g = (Graphics2D) paramGraphics.create();
   // RenderingHints etc.
 }

解决方法:

与仅支持图形的AWT的兼容性. Swing的组件扩展了java.awt.Component,它具有仅返回Graphics对象的getGraphics方法.在创建Swing时(Java 1.1 / 1.2),Java不知道协方差.即使返回类型不是方法签名的一部分,也不允许使用具有不同(原始子类)返回类型的重写方法.使用当今的语言功能,这是允许的,并且可能会以不同的方式完成,即返回类型将更改为Graphics2D.那时,唯一的方法是要么添加新方法(如getGraphics2D),要么完全破坏与AWT的轻松互操作性.

上一篇:java制作海报一:java使用Graphics2D 在图片上写字,文字换行算法详解


下一篇:这是MVC吗?简单的Java Graphics2D绘图程序