2012-01-25 21 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によって実装されています。ところで、この例では本当にあなたの質問を説明していません。 –

答えて

3

これは実装固有のものですが、通常、これらのメソッドはネイティブに実装されているため、ネイティブのウィンドウシステムと直接インターフェイスできます。 Graphicsオブジェクトをインスタンス化することはできません。Graphicsの具体的な実装はおそらくネイティブシステムとやりとりする実装固有のサブタイプGraphicsであるためです。 Javaライブラリと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」のときに、どのようにGraphicsオブジェクトを作成することができますか(下のコードのように)?しかし、あなたはいつも私の答えをdownvoteすることを歓迎しています。 –

関連する問題