我一直在考虑为我的一些项目制作自己的Java3D API。 (是的,我已经看过Oracle提供的Java3D API。)定义了java.awt.Graphics中的许多方法,例如drawRect(),但是一些基本函数,例如drawLine(),是抽象的。当Graphics.java中没有实现时,如何创建Graphics对象(如下面的代码中所示)?
public void paint(Graphics g) {
g.drawString("Hello World!");
}
非常感谢任何帮助或解释!提前致谢。
答案 0 :(得分:3)
这是特定于实现的,但这些方法通常是本机实现的,因此它们可以直接与本机窗口系统连接。您无法实例化Graphics
对象,因为您希望使用的Graphics
的具体实现可能是与本机系统交互的Graphics
的特定于实现的子类型。强制Java库和JVM实现者为您创建此对象可以防止您不得不处理操作系统级细节的肮脏,并为图形包提供通用的,类型安全的接口。
如果要实现自己的包,则可能必须使用JNI来实现图形包。然后,您可以在OpenGL,DirectX或您喜欢的任何其他系统上实现图形。
希望这有帮助!
答案 1 :(得分:0)
[从我的评论中复制:] 这些是由JRE原生实施的。
您可以创建缓冲图像,并为其获取图形对象:
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
Graphics2D g2 = image.getGraphics();
另请参阅:http://www.coderanch.com/t/345202/GUI/java/Create-Graphics-object