Applet的paint(Graphics g)中的Graphics Graphics是抽象类,在paint方法中怎么能作为一个参数呢,实际运行中是为什么可以直接调用它中的抽象方法drawString ,drawPolygon等? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Graphics作为一个抽象类是不能够直接调用它的抽象方法的,但是在paint(Graphics g)方法中传入的是一个继承了Graphics的具体类ProxyGraphics(在SUN的JDK中),因此你在使用drawPolygon方法时事实上是在调用Graphics子类的方法。 一般在paint方法中,都要类型转换Graphics2D g2=(Graphics2D)Graphics;然后调用这个类的方法就可以实现画图 Graphics的直接已知子类:DebugGraphics, Graphics2D,怎么没有看到你说的 ProxyGraphics,可以测试出它来吗? 给你一段代码,我在网上看到的。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); }} import sun.print.ProxyGraphics;并不是JDK中自带的 对的,只能调用Graphics的方法,一般都会把转化成Graphics2D,因为这类实现了更多的方法,而且实现了对图形的多态绘制,draw(Shape s) Java工程应用pull解析 java swing 异常处理 意见简单的继承问题(菜鸟问题) 一个关于Socket,IO的小问题,请教各位高人 求javaSwing或AWT高手帮个小忙 j2se学到什么程度可以学j2ee?高手请指点 软件由语言编好之后是怎么转换成一般看到的那种一点就可以运行的形式的? 一个java题目求解!!!! 急-谁能告诉我IE,支持jdk的版本是多少?为什么Enumeration 不能用? 给个建议 急!JDK6安装求助
Graphics2D g2=(Graphics2D)Graphics;
然后调用这个类的方法就可以实现画图
ProxyGraphics,可以测试出它来吗?
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); }}
并不是JDK中自带的
对的,只能调用Graphics的方法,一般都会把转化成Graphics2D,因为这类实现了更多的方法,而且实现了对图形的多态绘制,draw(Shape s)