简单java画图

来源:百度知道 编辑:UC知道 时间:2024/05/29 19:29:24
import java.awt.*;
public class drawline extends Frame{

public drawline()
{ Frame fr=new Frame("draw line");
fr.setSize(400,400);
fr.setBackground(Color.BLUE);
fr.getGraphics().drawLine(0,0,100,100);
fr.setVisible(true);
}
public static void main (String[] args)
{ drawline d= new drawline();
}

}

帮我看看什么地方有问题
可以编译但是在执行就会有问题了发生这样的错误
Exception in thread "main" java.lang.NullPointerException
at drawline.<init>(drawline.java:16)
at drawline.main(drawline.java:20)
我好像还是没有看懂啊
import java.awt.*;
import java.awt.event.*;

class GfxTest extends MouseAdapter{
int x1,x2,y1,y2;
Frame f=new Frame();

public static void main(String[] args) {
new GfxTest().a();
}

主要原因是在Frame还没有show之前,所有Frame上的组件是无法得到Graphics的,因为这是Graphics还不存在。

如果把“fr.setVisible(true);”调换到fr.getGraphics().drawLine(0,0,100,100);前面的话,就不会报错了,但是,仍然有问题,你看不到想要的那条线。

原因在于:
getGraphics()得到的 Graphics 上面 draw 出来的东西都是临时的,只要 repaint() 一下,上面画的东西就没了。所以要想画最好的办法就是 override paint 系列函数

参考:http://topic.csdn.net/t/20040725/20/3208581.html#的实例。

第16行出现错误了,一般JFrame的实例无法取得getGraphics(),可以尝试加一个Jpanel事例,然后调用getGraphics(),还有一个方法是直接重写Jpanel里的paint(Graphics g){}方法,这个方法是被自动调用来绘图的。

您的程序的问题是有对象是null,这个对象是fr.getGraphics(),也就是发生在这条语句中 fr.getGraphics().drawLine(0,0,100,100);
原因,在JFrame控件显示之前,不能通过调用getGraphics()而获得画笔的,如果需要在JFrame中画的话,需要重载它的paint方法。
你的程序可以稍作修改就可以了。
import java.awt.*;
public class drawline extends Frame{

protected void paint(Graphics g){
g.().drawLine(0,0,100,100);
}
public d