getGraphics()空指针错误

fbier2010 2010-09-03 08:42:57
想在JPanel里面画条线,但是一直报告空指针异常,请问这是什么原因呢?

import java.awt.*;
import javax.swing.*;
public class MyGame {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new Myframe("Hello").lanch();
}

}

class Myframe extends JFrame
{
JPanel jp =null;

public Myframe(String s)
{
super(s);
}

public void lanch()
{
ImageIcon im = new ImageIcon("E:/javadev/xuannan/Games/88.jpg");
JLabel lbl = new JLabel(im);
setBounds(300,65,700,550);
jp = new JPanel(null);
jp.setBounds(175,125,350,300);
jp.setBackground(Color.WHITE);
add(jp);

panelDrawLine();
add(lbl);
setVisible(true);

}

public void panelDrawLine()
{
jp.setVisible(true);
Graphics g=jp.getGraphics();
g.drawLine(175, 125, 525, 125); //就是这里报告空指针异常。

}
本人初学者,请说得通俗易懂点,谢谢~

}
...全文
341 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
huasheng724 2010-09-21
  • 打赏
  • 举报
回复
2楼正解
fbier2010 2010-09-04
  • 打赏
  • 举报
回复
恩,确实如magong所说的一样,我把JFrame的setVisivle(true);写到前面后就能正常运行了,但是新的问题又来了,怎么画出来的线就一闪而过啊?就是运行出来后那条线就一闪,然后线就没有了。请问这又是怎么回事啊?
本人菜鸟,劳烦大家了~
magong 2010-09-04
  • 打赏
  • 举报
回复
请直接覆盖MyFrame或jp Panel的paint方法,如前帖所示。
paint方法中的绘图结果才能“长久”。
magong 2010-09-03
  • 打赏
  • 举报
回复
典型错误,在Frame setVisible之前获取Graphics对象,会得到null。

你用的是SWing,所以可以直接覆盖MyFrame或jp Panel的paint方法,直接有Graphics对象提供好给你用的,不需要自己这么去取。

	@Override
public void paint(Graphics g) {
super.paint(g);

g.drawLine(175, 125, 525, 125); // 这样不会报告空指针异常。
}
justchenjie 2010-09-03
  • 打赏
  • 举报
回复
应该是jp为null吧,你要确定是先初始化了jp,最好在构造函数里

50,531

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧