Applet的paint(Graphics g)中的Graphics

sunrisefe 2011-05-12 04:21:46
Graphics是抽象类,在paint方法中怎么能作为一个参数呢,实际运行中是为什么可以直接调用它中的抽象方法drawString ,drawPolygon等?
...全文
130 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
chosen0ne 2011-05-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sunrisefe 的回复:]

引用 2 楼 chosen0ne 的回复:
一般在paint方法中,都要类型转换
Graphics2D g2=(Graphics2D)Graphics;
然后调用这个类的方法就可以实现画图

不转换也可以直接绘图,调用的就直接是子类中的覆盖方法,对吧
[/Quote]

对的,只能调用Graphics的方法,一般都会把转化成Graphics2D,因为这类实现了更多的方法,而且实现了对图形的多态绘制,draw(Shape s)。。。
sunrisefe 2011-05-16
  • 打赏
  • 举报
回复
import sun.print.ProxyGraphics;
并不是JDK中自带的
nomousewch 2011-05-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sunrisefe 的回复:]

引用 1 楼 nomousewch 的回复:
Graphics作为一个抽象类是不能够直接调用它的抽象方法的,但是在paint(Graphics g)方法中传入的是一个继承了Graphics的具体类ProxyGraphics(在SUN的JDK中),因此你在使用drawPolygon方法时事实上是在调用Graphics子类的方法。

Graphics的直接已知子类:DebugGraphics,……
[/Quote]
给你一段代码,我在网上看到的。

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JApplet;
import sun.print.ProxyGraphics;

public class StrinDrawing extends JApplet {
Graphics b;

Color str = null;

public void init() {
b = new ProxyGraphics(b);
}

public void paint(Graphics g) {
Color str = Color.blue;
g.setColor(str);
g.drawString("欢迎你来到这里!", 20, 30);

}

}
sunrisefe 2011-05-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 nomousewch 的回复:]
Graphics作为一个抽象类是不能够直接调用它的抽象方法的,但是在paint(Graphics g)方法中传入的是一个继承了Graphics的具体类ProxyGraphics(在SUN的JDK中),因此你在使用drawPolygon方法时事实上是在调用Graphics子类的方法。
[/Quote]
Graphics的直接已知子类:DebugGraphics, Graphics2D,怎么没有看到你说的
ProxyGraphics,可以测试出它来吗?
sunrisefe 2011-05-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chosen0ne 的回复:]
一般在paint方法中,都要类型转换
Graphics2D g2=(Graphics2D)Graphics;
然后调用这个类的方法就可以实现画图
[/Quote]
不转换也可以直接绘图,调用的就直接是子类中的覆盖方法,对吧
chosen0ne 2011-05-12
  • 打赏
  • 举报
回复
一般在paint方法中,都要类型转换
Graphics2D g2=(Graphics2D)Graphics;
然后调用这个类的方法就可以实现画图
nomousewch 2011-05-12
  • 打赏
  • 举报
回复
Graphics作为一个抽象类是不能够直接调用它的抽象方法的,但是在paint(Graphics g)方法中传入的是一个继承了Graphics的具体类ProxyGraphics(在SUN的JDK中),因此你在使用drawPolygon方法时事实上是在调用Graphics子类的方法。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧