日期:2014-05-20  浏览次数:20968 次

关于Graphics的提问
Graphics g=new Panel().getGraphics();
对于这个式子,对于他的用法和用的地方不大清楚明白,哪位仁兄仁姐能帮忙给我解释一下吗?
public class HuaTu extends JFrame{
public HuaTu()
{
this.setBounds(100,100, 100, 100);
Container con=this.getContentPane();
con.add(new HuaBan2());
}
public static void main(String args[])
{
new HuaTu().show();
}
}
class HuaBan2 extends JPanel{
public HuaBan2()
{
Graphics g=this.getGraphics();
g.drawString("Ok", 10, 10);
}
}
提示信息: Exception in thread "main" java.lang.NullPointerException
at shujuku.HuaBan2.<init>(HuaTu.java:20)
at shujuku.HuaTu.<init>(HuaTu.java:9)
at shujuku.HuaTu.main(HuaTu.java:13)

------解决方案--------------------
Java code

public class HuaTu extends JFrame {
    public HuaTu() {
        this.setBounds(100, 100, 100, 100);
        Container con = this.getContentPane();
        con.add(new HuaBan2());
    }

    public static void main(String args[]) {
        new HuaTu().show();
    }
}

class HuaBan2 extends JPanel {
    public HuaBan2() {
//        Graphics g = this.getGraphics();
//        g.drawString("Ok", 10, 10);
    }
    public void paint(Graphics g){
        super.paint(g);//你去看看里面做了什么
        g.drawString("Ok", 10, 10);
    }
}

------解决方案--------------------
Graphics g=new Panel().getGraphics(); 


只知道是获取画板o_O..
其余不懂..
------解决方案--------------------
graphics是java2d里面负责“画画”的对象,
从它的那些方法就可以看出这一点,
getGraphics的目的也就是取得描画这个控件的graphics,
用vc的话就是句柄handler的意思了
然后就可以直接用这个对象来画这个对象。
1楼的例子里面的paint方法参数和楼主例子里面的,
还有canvas
都是底层框架提供这个graphic的对象,然后我们可以用这个graphics来“画”

good luck