さて、ここには2つの問題があります1:
Graphics g1;
a.paint(g1);
G1 が初期化されていないというエラーが表示されます。これは、変数 g1 が何も設定されておらず、コンパイル エラーが発生するためです。コードをコンパイルするには、少なくとも次のようにする必要があります。
Graphics g1 = null;
a.paint(g1);
ただし、それは明らかにあまり役に立ちません。コードを実行しようとすると、NullPointerException が発生します。実際にグラフィックを描画するには、次のことが必要です。
anim1 a=new anim1();
Graphics g1 = anim1.getGraphics();
a.paint(g1);
ただし、Anim1 が画面に表示されないため、それでも機能しません。画面に表示するには、次のようなものが必要です。
import java.awt.*;
import javax.swing.*;
import java.applet.*;
public class So1 extends Applet{
public void paint (Graphics g)
{
g.drawString("hello",40,30);
}
public static void main(String ad[])
{
JFrame jp1 = new JFrame();
So1 a=new So1 ();
jp1.getContentPane().add(a, BorderLayout.CENTER);
jp1.setSize(new Dimension(500,500));
jp1.setVisible(true);
}
}
ここで注意してください、私たちは実際には paint() 関数を自分で呼び出していません。これは awt によって処理されます。awt は実際にグラフィックス コンテキストを選択し、ペイント関数を呼び出します。ただし、必要に応じて、任意のグラフィックス オブジェクトを渡して、それに描画するように要求することができます。(したがって、コンポーネントを画像に描画したい場合は、それを行うことができます)
(注、クラス名を anim1 から So1 に変更しました)