永发信息网

java swing 中的 paint(Graphics g) 中,g这个实例是由哪个类创建的?

答案:3  悬赏:0  手机版
解决时间 2021-02-23 00:12
学习java swing的时候遇到这个问题,一直倍受困扰。查看过JComponent的源程序,只找到void paint(Graphics g)的方法定义
public void paint(Graphics g) {
boolean shouldClearPaintFlags = false;
if ((getWidth() <= 0) || (getHeight() <= 0)) {
return;
}
Graphics componentGraphics = getComponentGraphics(g);
Graphics co = componentGraphics.create();
try {
RepaintManager repaintManager = RepaintManager.currentManager(this);
Rectangle clipRect = co.getClipBounds();
int clipX;
int clipY;
int clipW;
int clipH;
。。。。。。
Graphics g 是形式参数,怎么最后到了自己的程序中变成了实参了呢?我可以直接使用
super.paint(g);
g.draw3DRect(0, 0, 10, 20, false);
来在组件上面画图。g在这里应该是一个实例化后的对象,g在哪里被创建的呢?
最佳答案
自己的程序中重写paint方法也是形参,不是实参,实参是在系统自动调用paint方法时候传递的
全部回答
你好! Graphics是一个抽象类,也就是说不可以直接实例化对象,只能采取 Graphics g = jp.getGraphics() 的方法来获取画布工具并传Graphics的g对象,这里的jp是某个实例化的窗体或者面板对象,对应画出来的图像就在这个jp容器上面 如果没有经过getGraphics()这一步,就会默认为取的是你实例化的MainJFrame作为画布对象, 有了画布对象自然就可以在上面随便画了,而且由于是引用传递,所以传的是地址,不是值,所以形参和实参也就没多大差别了,都是在直接访问地址的。 如有疑问,请追问。
不知道你懂不懂C语言,作为参数被传入函数的指针,可被修改及赋予其他功能。 Graphics 类型的g被paint修改后,可作为画图类。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
人体生命活动所需要的能量主要来自糖类脂肪是
体育运动对心脏有哪些好处
sga-001有没有码
江西省九江市机要局在哪个位置
【卑微的力量阅读答案】《卑微的力量》阅读答
牙齿不齐要怎么办?
英语问题 关于next Sunday前加不加 the.
我买了个千足金金镶玉观音挂坠,花了8000多贵
陈俊杰 取小名
教学媒体种类有哪些
精气概念的产生,源于()A.阴阳说B.水地说C.五
在一家银行申请了妇女创业无利息贷款后还可以
深圳罗湖区人民北路凉果街怎么去?
nbh和nb鞋是一个牌子吗,鞋盒商标有字母hk,
助人为乐的感觉真好作文980字
推荐资讯
梦幻西游原来申请账号是用vivo手机注册的现在
bk-150va控制变压器怎么接
形容无人懂自己的成语
膝盖受伤为什么脚会很肿
南通市跃小幼儿园我想知道这个在什么地方
考虑可能的疾病()A.锁骨骨折B.肘关节脱位C.肩
格列佛游记中“从黄瓜中提取阳光” 用英语怎
以前一直有个疑问,为什么明朝杨姓的名臣那么
胰腺手术后十天引流岀乳白色液体
藏族电影求推荐几部
南京最好的二维火收银系统,电话多少?
客车由甲站开往乙站需要8小时,货车从乙站开
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?