高人请进:请问Graphics和Graphics2D类中的abstract方法最终是由哪些类实现的?

goldenhua 2003-10-19 09:52:09
我看awt和swing的类层次中,并没有哪个类最终实现Graphics和Graphics2D中的abstract方法,譬如drawString方法,那么这些方法是如何工作的呢?
...全文
67 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
goldenhua 2003-10-25
  • 打赏
  • 举报
回复
谢谢 jigsaw(jigsaw) ,那就是sun.java2D.SunGraphics2D了,可是却拿不到其源代码。
jigsaw 2003-10-23
  • 打赏
  • 举报
回复
很简单
你在构造函数里面加一句:

System.out.println(getClass().getName());

看看打出来是什么就知道了
goldenhua 2003-10-21
  • 打赏
  • 举报
回复
Java的真正核心技术(JVM的实现,编译器实现,jre\bin目录下的所有dll的源代码,rt.jar运行环境中一半的源码)Sun并没有公开,J2SE的源代码是公开了,但其中的基本机制的实现的源代码却没有公开(rt.jar中sun打头的类的源代码没有提供);
goldenhua 2003-10-21
  • 打赏
  • 举报
回复
beyond_xiruo(Java/.NET两手抓,两手都要硬) 你没有明白我的意思,我想知道的是Graphics和Graphics2D所提供的绘图功能最终是借助哪些类来实现的;这是一个基本机制的提供问题。譬如对象clone是Object类提供的机制,由虚拟机直接支持;字符串相加及与对象相加(相当于"+"操作重载,需要用到toString方法)是语言规定编译器提供支持的;java.awt.ToolKit的实现是系统属性awt.toolkit指定的类(这个类在rt.jar中,sun没有提供源代码):
public static synchronized Toolkit getDefaultToolkit() {
if (toolkit == null) {
try {
// We disable the JIT during toolkit initialization. This
// tends to touch lots of classes that aren't needed again
// later and therefore JITing is counter-productiive.
java.lang.Compiler.disable();

java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction() {
public Object run() {
String nm = null;
Class cls = null;
try {
nm = System.getProperty("awt.toolkit",
"sun.awt.motif.MToolkit");
try {
cls = Class.forName(nm);
} catch (ClassNotFoundException e) {
ClassLoader cl = ClassLoader.getSystemClassLoader();
if (cl != null) {
try {
cls = cl.loadClass(nm);
} catch (ClassNotFoundException ee) {
throw new AWTError("Toolkit not found: " + nm);
}
}
}
if (cls != null) {
toolkit = (Toolkit)cls.newInstance();
if (GraphicsEnvironment.isHeadless()) {
toolkit = new HeadlessToolkit(toolkit);
}
}
} catch (InstantiationException e) {
throw new AWTError("Could not instantiate Toolkit: " +
nm);
} catch (IllegalAccessException e) {
throw new AWTError("Could not access Toolkit: " + nm);
}
return null;
}
});
loadAssistiveTechnologies();

} finally {
// Make sure to always re-enable the JIT.
java.lang.Compiler.enable();
}
}
return toolkit;
}

我现在想知道的是,整个java的图形环境是如何借助于操作系统的图形功能来实现的,当然这个探索的入口点就是Graphics和Graphics2D的能力是从何处来的;
希偌 2003-10-19
  • 打赏
  • 举报
回复
方法public void paint(Graphics g)获取的绘图环境
Graphics2D g2d=(Graphics2D)g;可以将Graphics转换成Graphics2D

另外,在applet里,用如下语句建立Image
Image img=this.createImage(int width,int height);
然后就可以用下面的方法获取Graphics
Graphics g=img.getGraphics();
用下面的方法获取Graphics2D
Graphics2D g2d=img.createGraphics();

62,614

社区成员

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

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