java 中如何利用Graphics类绘图
2007-11-02 22:47
197 查看
关于Graphics类的一个结论:Graphics类是所有图形上下文(Graphic context)的抽象基类,因此它是不能直接实例化的,那么为了使用Graphics类绘图,就必须创建其非抽象的子类。
那么我们又如何在这个子类中实现Graphics类(Graphics中定义了很多抽象方法)中的抽象方法呢?
要用这些方法来实现在特定的组件及设备上绘图,而又不能用Graphics类(因为它无法被实例化),怎么做呢?没有办法。甚至连现有的Graphics类的子类也不会用。但我们知道Applet、Canvas、Frame等很多组件类都继承并重载了repaint()方法,而轻量级的repaint()方法又会调用paint(Graphics g)方法。这样,我们通过继承这些组件类,重写其中的paint方法(因为这个方法提供了Graphics类的子类的实例),在这个方法体中完成我们在对应组件上的绘图意图,然后在外部调用repaint()方法(因为它不需要Graphics参数,我们恰恰也不知道怎么创建一个有用的Graphics类的子类及其实例),就可以实现绘图了。
概括起来讲就是:找到一个带有(Graphics g)参数的现有方法和一个自动调用该方法而不带有(Graphics g)参数的现有方法,覆盖前一个方法,在外部调用后一个方法,从而实现绘图目的。
最常见、常用的是paint,paintGraphics和repaint。
那么我们又如何在这个子类中实现Graphics类(Graphics中定义了很多抽象方法)中的抽象方法呢?
要用这些方法来实现在特定的组件及设备上绘图,而又不能用Graphics类(因为它无法被实例化),怎么做呢?没有办法。甚至连现有的Graphics类的子类也不会用。但我们知道Applet、Canvas、Frame等很多组件类都继承并重载了repaint()方法,而轻量级的repaint()方法又会调用paint(Graphics g)方法。这样,我们通过继承这些组件类,重写其中的paint方法(因为这个方法提供了Graphics类的子类的实例),在这个方法体中完成我们在对应组件上的绘图意图,然后在外部调用repaint()方法(因为它不需要Graphics参数,我们恰恰也不知道怎么创建一个有用的Graphics类的子类及其实例),就可以实现绘图了。
概括起来讲就是:找到一个带有(Graphics g)参数的现有方法和一个自动调用该方法而不带有(Graphics g)参数的现有方法,覆盖前一个方法,在外部调用后一个方法,从而实现绘图目的。
最常见、常用的是paint,paintGraphics和repaint。
相关文章推荐
- Java如何有效避免OOM:利用软引用和弱引用
- 应该如何利用JNI技术提高Java的性能详解
- 浅谈JAVA中如何利用socket进行网络编程(一)
- 【工具类-java image filter】如何利用java缩放图片?
- 如何利用MyEclipse将Java工程导出jar包
- 如何利用java得到当前的时间和前一天的时间
- 如何利用Java的反射的机制来简化Structs应用程序的开发
- 如何利用java把文件中的Unicode字符转换为汉字
- 如何利用 JConsole观察分析Java程序的运行,进行排错调优
- Java 如何有效地避免OOM:善于利用软引用和弱引用
- 使用Java的Graphics类进行绘图的方法详解
- Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
- Java 如何有效地避免OOM:善于利用软引用和弱引用
- 如何利用 JConsole观察分析Java程序的运行,进行排错调优(转)
- Java 如何有效地避免OOM:善于利用软引用和弱引用
- JAVA如何利用接口制造类似于C++的多继承
- java怎么判断两个Set 里的对象的值是否相同【两个set中的值是否相等】、java treeset和hashset如何判断元素是否相同【即对象是否完全相同;利用一个set去除重复元素】
- Java 如何有效地避免OOM:善于利用软引用和弱引用
- Java Graphics类的绘图方法
- Java 如何有效地避免OOM:善于利用软引用和弱引用