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);
}这个是另一个类的函数 只画正方形 如何把两个函数单身无法使用 展开
// 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);
}这个是另一个类的函数 只画正方形 如何把两个函数单身无法使用 展开
展开全部
paint 是一次性的,不能分成2次来操作。
Swing 中这些组件绘图都是按一个层次进行的,如果是独立的组件会自己负责绘图,而某些复合型组件(比如 Tabbed Panel) 需要负责绘制 title 和边框之类的,而包括在其中的组件则是自己绘图。
你的代码中的 paintComponent 先用默认的方法绘图之后只是设定一个颜色,然后用孩子组件来绘图这很奇怪,为什么不把颜色直接告诉 bullets 组件让它自己来绘图呢?要么父组件负责绘图,要么子组件负责绘图,你这种把事情分成2个相关的但隔离地不合理的做法违背了面向对象程序设计的原理,也就是违背了一般做事情的合理性。
另外,一般来说我们覆盖了 paintComponent 就可以了,你是同时也覆盖了同个类的 paint 方法?
paintComponent 是被调用的,它们两个方法不是独立的,我们覆盖其中一个就可以了。
Swing 中这些组件绘图都是按一个层次进行的,如果是独立的组件会自己负责绘图,而某些复合型组件(比如 Tabbed Panel) 需要负责绘制 title 和边框之类的,而包括在其中的组件则是自己绘图。
你的代码中的 paintComponent 先用默认的方法绘图之后只是设定一个颜色,然后用孩子组件来绘图这很奇怪,为什么不把颜色直接告诉 bullets 组件让它自己来绘图呢?要么父组件负责绘图,要么子组件负责绘图,你这种把事情分成2个相关的但隔离地不合理的做法违背了面向对象程序设计的原理,也就是违背了一般做事情的合理性。
另外,一般来说我们覆盖了 paintComponent 就可以了,你是同时也覆盖了同个类的 paint 方法?
paintComponent 是被调用的,它们两个方法不是独立的,我们覆盖其中一个就可以了。
追问
有一个函数paint 就是定义bullet 的类里面有个paint 方法,然后又创建一个jpanel画颜色paintComponent作业要求的,,
追答
你这段话描述地不准确,你说的画颜色是指画布的背景色并且这个画布上有几个 bullet?
如果是背景色,那你在 paintComponent 中就有事情要做,而不是设置了颜色就完了。
画布的背景色是直接 fillRect 填充一个矩形就可以了。drawRect 本身只是画个空心的框。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询