Java getGraphics()方法的空指针异常
想在JPanel里面画条线,但是一直报告空指针异常,请问这是什么原因呢?importjava.awt.*;importjavax.swing.*;publicclassM...
想在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); //就是这里报告空指针异常。
}
本人菜鸟,请说得通俗易懂点,谢谢~
} 展开
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); //就是这里报告空指针异常。
}
本人菜鸟,请说得通俗易懂点,谢谢~
} 展开
1个回答
展开全部
先来看一下官方文档关于getGraphics方法的说明:
public Graphics getGraphics()
Creates a graphics context for this component. This method will return null if this component is currently not displayable.
Overrides:
getGraphics in class Component
Returns:
a graphics context for this component, or null if it has none
注意最后一句,返回值有可能是null
jpanel、jframe等各种对象的默认构造器是不会为其增加一个Graphics对象的,也就是说,默认情况下,getGraphics返回的就是null,空指针就是必然了。
要避免这个错误,有两种方法,一种是构造jpanel时,使用带有默认Graphics的构造器,第二种就是为其分配一个
public Graphics getGraphics()
Creates a graphics context for this component. This method will return null if this component is currently not displayable.
Overrides:
getGraphics in class Component
Returns:
a graphics context for this component, or null if it has none
注意最后一句,返回值有可能是null
jpanel、jframe等各种对象的默认构造器是不会为其增加一个Graphics对象的,也就是说,默认情况下,getGraphics返回的就是null,空指针就是必然了。
要避免这个错误,有两种方法,一种是构造jpanel时,使用带有默认Graphics的构造器,第二种就是为其分配一个
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询