2012-01-25 4 views
3

저는 몇 개의 프로젝트에서 내 자신의 Java3D API를 만드는 것에 대해 많이 생각해 왔습니다. (예, Oracle에서 제공 한 Java3D API를 보았습니다.) drawLect()와 같은 java.awt.Graphics의 많은 메소드가 정의되어 있지만 drawLine()과 같은 일부 기본 함수는 추상입니다. Graphics.java에 구현이없는 경우 (아래 코드 에서처럼) Graphics 객체를 만드는 것이 어떻게 가능합니까?java.awt.Graphics의 메소드는 어디에 정의되어 있습니까?

public void paint(Graphics g) { 
    g.drawString("Hello World!"); 
} 

어떤 도움이나 설명이 크게 감사드립니다! 미리 감사드립니다.

+0

다음은 기본적으로 JRE에 의해 구현된다. BTW,이 예제는 실제로 귀하의 질문을 설명하지 않습니다. –

답변

3

이것은 구현에 따라 다르지만 일반적으로 이러한 메소드는 기본 윈도우 시스템과 직접 인터페이스 할 수 있도록 기본적으로 구현됩니다. Graphics 개체를 인스턴스화 할 수 없습니다. Graphics의 구체적인 구현은 아마도 네이티브 시스템과 상호 작용하는 구현 관련 하위 유형 Graphics 일 것입니다. 자바 라이브러리와 JVM 구현자가 강제로이 객체를 생성하면 OS 레벨의 세부 사항을 다루지 않아도되고 그래픽 패키지에 일반적인 유형 안전 인터페이스를 제공합니다.

자신 만의 패키지를 구현하려면 JNI를 사용하여 그래픽 패키지를 구현해야 할 것입니다. 그런 다음 OpenGL, DirectX 또는 원하는 다른 시스템 위에 그래픽을 구현할 수 있습니다.

희망이 도움이됩니다.

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

+1

나는 이것이 질문에 대답하지 않는다고 생각한다. OP의 질문은 메서드의 대부분이 추상적 일 때'Graphics'가 어떻게 생성되는지, 기존'Graphics' 객체를 처리하는 방법이 아니라는 것입니다. – templatetypedef

+0

''true '일 때'아래 코드와 같이 그래픽 개체를 만드는 것이 어떻게 가능합니까? '라는 질문에 대한 대답입니다.' 하지만 항상 내 대답을 downvote 환영합니다. –

관련 문제