社区
Java SE
帖子详情
GUI 中paint方法的问题
liumingwei2009
2009-11-14 10:22:46
如果一个类继承Applet她有paint方法
public void paint(Graphics g)
我查过了Grahpics是抽象类,里面的方法也是抽象的,
那方法体里面怎么会用抽象方法呢?
g.fillArc(xxxxxxxx);
...全文
360
9
打赏
收藏
GUI 中paint方法的问题
如果一个类继承Applet她有paint方法 public void paint(Graphics g) 我查过了Grahpics是抽象类,里面的方法也是抽象的, 那方法体里面怎么会用抽象方法呢? g.fillArc(xxxxxxxx);
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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调用Graphics类
中
的
paint
方法
,窗口出现黑屏
在调用Graphics
中
,使用
paint
方法
时,显示的
GUI
窗口黑屏。源代码如下: 运行时,
GUI
窗口显示如下: 窗口显示黑屏,程序运行异常,跟我想要的结果不一样。仔细查看这一段源代码: @Override public void
paint
(Graphics g) {//自动被调用,g相当于一只画笔 g.drawLine(100, 100, 300, 300);//画一条线 ...
Java的GUL编程
中
paint
()
方法
会覆盖窗口组件的
问题
虽然就目前而言大多数的桌面应用程序开发都不是用java来写的 但是不能否认java的桌面应用程序开发 也就是GUL开发,还是有一点学习意义的 特别是需要用使用java来做Android开发的朋友 掌握java的GUL编程更是无可厚非 在实际的开发
中
我们或许会遇到需要画的东西,也就是
paint
()
方法
所画的东西 把我们的窗口组件给遮盖了 这时我们如果在运行
中
,把鼠标放到哪个组件所在
Java
中
GUI
的重绘
paint
()
做Tank: 用Java的
GUI
设计图形界面要使界面
中
内容动起来就要在JPanel
中
用到重绘
paint
(); 重绘都会自动调用,不需要人为调用 奇怪的是我的JPanel组建加到JFrame
中
了,但就是没有调用
paint
(); 我照着源代码看,发现没错啊,怎么会没调用呢?还怀疑是否是MyEclipse6.5的设置有
问题
,或者取消默认布局影响到
paint
()的调用了 后来瞪大眼睛一...
java 如何重绘_Java
中
GUI
的重绘
paint
()
做Tank:用Java的
GUI
设计图形界面要使界面
中
内容动起来就要在JPanel
中
用到重绘
paint
();重绘都会自动调用,不需要人为调用奇怪的是我的JPanel组建加到JFrame
中
了,但就是没有调用
paint
();我照着源代码看,发现没错啊,怎么会没调用呢?还怀疑是否是MyEclipse6.5的设置有
问题
,或者取消默认布局影响到
paint
()的调用了后来瞪大眼睛一看啊自己把
paint
()头一个...
Java SE
62,622
社区成员
307,255
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章