有关paintComponent会删除之前绘制的组件
来源:互联网 发布:内蒙11选5遗漏数据查询 编辑:程序博客网 时间:2024/05/22 07:41
最近做模拟Buffon投针,要在一个panel上模拟多次投针的动作,调用paint绘制“针”时,总是会把上次绘制的擦除掉...注释掉super.paint虽然可以防止擦除,但是整个panel的布局都会毁掉。
解决方法,使用bufferImage,每一次投针动作,都把针画到bufferImage对象中,paint bufferImage对象。
package buffonneedle;import java.awt.Color;public class BuffonPanel extends JPanel{private static final long serialVersionUID = -4803828492748385106L;BuffonSimulate bs = new BuffonSimulate();int x1=0,y1=0,x2=0,y2=0;private Image pic = createImage(1000, 500, true);private Graphics graphics = pic.getGraphics();final static public BufferedImage createImage(int width, int height,boolean flag){if (flag) {return new BufferedImage(width, height, 2);} else {return new BufferedImage(width, height, 1);}}@Overridepublic void update(Graphics g) {graphics.setColor(Color.black);int loop = BuffonSimulate.ScreenHeight/BuffonSimulate.RowHeight;for(int i=0;i<=loop;i++){graphics.drawLine(0, i*BuffonSimulate.RowHeight, BuffonSimulate.ScreenWidth, i*BuffonSimulate.RowHeight);}graphics.drawLine(x1, y1, x2, y2);g.drawImage(pic, 0, 0, null);g.dispose();}@Overridepublic void paint(Graphics g) {super.paint(g);update(g);}public boolean startSimulate(){Point[] p = bs.Simulate();boolean isCross = bs.isIntersection(p);x1 = p[0].x;y1 = p[0].y;x2 = p[1].x;y2 = p[1].y;repaint();return isCross;}}
- 有关paintComponent会删除之前绘制的组件
- 清除之前绘制的path
- JFC 中绘制方法 paint(Graphics g) 和 paintComponent(Graphics g) 的区别
- JFC 中绘制方法 paint(Graphics g) 和 paintComponent(Graphics g) 的区别(转)
- java中组件的paint(Graphics g)与paintComponent(Graphics g)的区别
- 关于awt/swing组件中paint, update, paintComponent, repaint的经验
- 关于awt/swing组件中paint, update, paintComponent, repaint的经验
- sql的delete会在删除之前先检测像平均值之类依靠删除前关系的where条件
- 有关ASP的组件
- 微信小程序例子——使用画布组件绘制一个会自动缩放的正方体
- 微信小程序例子——使用画布组件绘制一个会自动旋转的正方体
- paint()与paintComponent()的区别
- java paintComponent的一些解读
- paint().paintComponent()方法的区别
- 批量删除的有关
- 有关WrapPanel组件的研究
- 有关Accordion组件的研究
- 有关Expander组件的研究
- 函数调用规范
- 用WebWork、JSP、Velocity建立注册页面
- python改变形参的值
- poj 2251 三维BFS
- FastCV
- 有关paintComponent会删除之前绘制的组件
- 《大话设计模式》代码JAVA版-第7章 代理模式
- 如果编程语言是一种刀
- raising hope 2.9
- css控制文本超出部分用省略号表示
- JSP可用变量
- CCLayer 指定显示区域
- jxl.jar 的百度百科,根据这个还是可以搞出来的,不过就是修改那块写的不是很好,修改其实可以直接读取数据并操作。
- qqqq