2016-03-16 29 views
-1

我在想如何java.awt.Graphics的工作原理和我通过NetBeans去源代码。
我注意到图形是一个abstract类和我使用的所有功能是abstract函数
这使我的事情,我该如何使用图形?
我的意思是,Graphics是一个abstract类,我在JPanel中使用了一个Graphics对象。
它是如何工作的?我如何使用它作为抽象类,而不使用实现Graphics的类?
如何使用图形 - 抽象类

+1

您使用继承它的类。你只是不知道哪一个。 – SLaks

+0

首先查看[绘制AWT和Swing](http://www.oracle.com/technetwork/java/painting-140037.html)以获取有关绘画过程的更多详细信息。 'Graphics'是抽象的,因为它依赖于它用来绘制的物理目标,绘制到图像,屏幕或打印机都需要不同的实现。 – MadProgrammer

+0

在屏幕和打印机的情况下,系统根据设备的所需实现创建一个'Graphics'上下文的实例,并将其传递给您,您不需要知道物理实现,只需要您可以调用'Graphics'的方法 – MadProgrammer

回答

4

您不能直接使用抽象类的实例。诸如Graphics之类的抽象类不能被实例化;只有具体的子类可以(图形有两个,DebugGraphics和Graphics2D)。在JPanel的情况下,你在paintComponent()中得到的Graphics参数实际上是Graphics2D的一个实例(你可以通过转换来检查它)。 Graphics2D类提供了Graphics中抽象方法的实现。

+0

那么为什么没有绘制'Graphics2D'呢?为什么他会得到'Graphics'? – Amirag

-1

你应该使用他的一个实现,抽象类不能实例化。