那么这里有两个问题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 处理,它实际上选择图形上下文,并为我们调用我们的绘制函数。不过,如果你愿意,你可以传入任何你想要的图形对象,并要求它在上面绘制。(因此,如果您想将组件绘制到图像上,可以这样做)
(注意,我将类名从 anim1 更改为 So1)