那么这里有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中)