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