12

GraphicsGraphics2Dの違いは何ですか?
Graphics2D は Graphics の拡張かどうか?

public void paintComponent(Graphics g)
{
    super.paintComponent(g);
    g.drawRect(25, 25, 20, 20); //use Graphics to paint rectangle
    Graphics2D g2 =(Graphics2D)g;
    g2.drawRect(0, 0, 20, 20); // use Graphics2D to paint rectangle
}
4

1 に答える 1

19

Graphics 自体は であるabstract classため、そのインスタンスを作成することはできません。一部のインターフェースと一部の機能のみを定義しているため、他のクラスで拡張できます。

Graphics gでパラメータとして使われているこれでも、paintComponentだけではありませんGraphics。標準 Java ライブラリには拡張クラス : が 2 つしかないDebugGraphics, Graphics2Dため、Graphics g使用しているのはGraphics2Dに格納されているインスタンスGraphics gです。

そうでない場合、行Graphics2D g2 =(Graphics2D)g;はエラーで終了します。

于 2013-10-13T11:59:18.323 に答える