JAVA paintComponent(Graphics g)重写

publicvoidpaintComponent(Graphicsg){//TODOAuto-generatedmethodstubsuper.paintComponen... public void paintComponent(Graphics g) {

// TODO Auto-generated method stub
super.paintComponents(g);

g.setColor(Color.red);
x.bullets.get(1).paint(g);

这个函数只画颜色

}
public void paint(Graphics g){
super.paint(g);
g.drawRect(Got_Ship_x_position(), Got_Ship_y_position(), 1,1);
}这个是另一个类的函数 只画正方形 如何把两个函数单身无法使用
展开
 我来答
jamxval
2014-05-25 · TA获得超过6822个赞
知道大有可为答主
回答量:4308
采纳率:82%
帮助的人:1416万
展开全部
paint 是一次性的,不能分成2次来操作。

Swing 中这些组件绘图都是按一个层次进行的,如果是独立的组件会自己负责绘图,而某些复合型组件(比如 Tabbed Panel) 需要负责绘制 title 和边框之类的,而包括在其中的组件则是自己绘图。

你的代码中的 paintComponent 先用默认的方法绘图之后只是设定一个颜色,然后用孩子组件来绘图这很奇怪,为什么不把颜色直接告诉 bullets 组件让它自己来绘图呢?要么父组件负责绘图,要么子组件负责绘图,你这种把事情分成2个相关的但隔离地不合理的做法违背了面向对象程序设计的原理,也就是违背了一般做事情的合理性。

另外,一般来说我们覆盖了 paintComponent 就可以了,你是同时也覆盖了同个类的 paint 方法?
paintComponent 是被调用的,它们两个方法不是独立的,我们覆盖其中一个就可以了。
追问
有一个函数paint 就是定义bullet 的类里面有个paint 方法,然后又创建一个jpanel画颜色paintComponent作业要求的,,
追答
你这段话描述地不准确,你说的画颜色是指画布的背景色并且这个画布上有几个 bullet?

如果是背景色,那你在 paintComponent 中就有事情要做,而不是设置了颜色就完了。

画布的背景色是直接 fillRect 填充一个矩形就可以了。drawRect 本身只是画个空心的框。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式