社区
Java SE
帖子详情
GUI 中paint方法的问题
liumingwei2009
2009-11-14 10:22:46
如果一个类继承Applet她有paint方法
public void paint(Graphics g)
我查过了Grahpics是抽象类,里面的方法也是抽象的,
那方法体里面怎么会用抽象方法呢?
g.fillArc(xxxxxxxx);
...全文
315
9
打赏
收藏
GUI 中paint方法的问题
如果一个类继承Applet她有paint方法 public void paint(Graphics g) 我查过了Grahpics是抽象类,里面的方法也是抽象的, 那方法体里面怎么会用抽象方法呢? g.fillArc(xxxxxxxx);
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bayougeng
2009-11-15
打赏
举报
回复
[Quote=引用 7 楼 hjjk123 的回复:]
就是这样的!!
记得以前有人提过这个问题!!】
就是
在Grphics内部!!
Graphics g=new Graphics()
类似的语句!!所以返回的是个实例化对象!!当然可以调用方法了
[/Quote]
你写一个出来我看看,new的出来么???
是这样:
Graphics g=new Graphics(){...//重写某些方法};
不止是抽象类,对于接口,同样可以:
Runnable runnable = new Runnable(){public void run(){}};
至于楼主说的g.fillArc(xxxxxxxx);
g代表的是Graphics类的实例。
既然可以实例化,当然就不是Graphics类了,而是Graphics的非抽象子类。
这就是上溯造型。
liumingwei2009
2009-11-15
打赏
举报
回复
[Quote=引用 7 楼 hjjk123 的回复:]
就是这样的!!
记得以前有人提过这个问题!!】
就是
在Grphics内部!!
Graphics g=new Graphics()
类似的语句!!所以返回的是个实例化对象!!当然可以调用方法了
[/Quote]
正解,一针见血!刚刚又谷歌了一下。大家也可以一起参考。
关于Graphics类的一个结论:Graphics类是所有图形上下文(Graphic context)的抽象基类,因此它是不能直接实例化的,那么为了使用Graphics类绘图,就必须创建其非抽象的子类。
那么我们又如何在这个子类中实现Graphics类(Graphics中定义了很多抽象方法)中的抽象方法呢?
要用这些方法来实现在特定的组件及设备上绘图,而又不能用Graphics类(因为它无法被实例化),怎么做呢?没有办法。甚至连现有的Graphics类的子类也不会用。但我们知道Applet、Canvas、Frame等很多组件类都继承并重载了repaint()方法,而轻量级的repaint()方法又会调用paint(Graphics g)方法。这样,我们通过继承这些组件类,重写其中的paint方法(因为这个方法提供了Graphics类的子类的实例),在这个方法体中完成我们在对应组件上的绘图意图,然后在外部调用repaint()方法(因为它不需要Graphics参数,我们恰恰也不知道怎么创建一个有用的Graphics类的子类及其实例),就可以实现绘图了。
概括起来讲就是:找到一个带有(Graphics g)参数的现有方法和一个自动调用该方法而不带有(Graphics g)参数的现有方法,覆盖前一个方法,在外部调用后一个方法,从而实现绘图目的。
最常见、常用的是paint,paintGraphics和repaint。
文章出处:DIY部落(http://www.diybl.com/course/3_program/java/javajs/2007114/83419.html)
苍蝇①号
2009-11-14
打赏
举报
回复
抽象方法在执行的时候已经被非抽象子类实例化了。这是因为动态关联,所以不会有问题
closewbq
2009-11-14
打赏
举报
回复
你有没有注意到在这方法中要调用
super.paintComponent(g);
liumingwei2009
2009-11-14
打赏
举报
回复
方法我也查过主要的方法也是抽象的,包括下面用到的方法如我上面写的一个fillArc等,我也没看到实现了Graphics的子类在paint方法中
pywepe
2009-11-14
打赏
举报
回复
楼上正解
hjjk123
2009-11-14
打赏
举报
回复
首先 抽象类里不都是抽象 方法吧!!
接口里的方法都是抽象的
hjjk123
2009-11-14
打赏
举报
回复
就是这样的!!
记得以前有人提过这个问题!!】
就是
在Grphics内部!!
Graphics g=new Graphics()
类似的语句!!所以返回的是个实例化对象!!当然可以调用方法了
kuangren987
2009-11-14
打赏
举报
回复
抽象类中不都是抽象方法`
java
GUI
编程之
paint
绘制操作示例
主要介绍了java
GUI
编程之
paint
绘制操作,结合实例形式详细分析了java
GUI
编程
paint
绘制相关操作技巧与使用注意事项,需要的朋友可以参考下
Java
中
Graphics的
paint
和re
paint
方法
.pdf
Java
中
Graphics的
paint
和re
paint
方法
.pdf 学习资料 复习资料 教学资源
Paint
.Net源码
值得一看的图片处理代码,使用.NET2008进行开发。
java五子棋游戏 界面非常美观 有详细的注释 非常适合初学者
自己用JAVA做的一个五子棋游戏界面非常美观,有详细的注释,非常适合初学者。
Qt动态圆形进度条
Qt动态圆形进度条。 这个系非常非常漂亮滴。欢迎大家可以学习。
Java SE
62,630
社区成员
307,264
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章