java 给小画板加上重绘

编程入门 行业动态 更新时间:2024-10-27 11:18:16

java 给小<a href=https://www.elefans.com/category/jswz/34/1723245.html style=画板加上重绘"/>

java 给小画板加上重绘

在窗口最小化、改变窗口的位置、大小等操作时 我们会发现原先已经画好的图不见了

这到底是为什么呢?

简单点说是因为在对窗口进行这些操作时,窗口重新绘制了一遍,而由于我们没有重写JFrame里的paint()方法,所以调用的是父类的方法。

public void paint(Graphics g) {
//调用父类的方法	super.paint(g);
//list里存放每个图形的对象for (int i = 0; i < list.size(); i++) {Shape s = list.get(i);s.draw(g);}
}

这里的list里存放的是 你的每个图形

public class Shape implements {/*** */public int x1, y1, x2, y2;public Color color=Color.black;public String type;public ImageIcon icon;public Shape(int x1, int y1, int x2, int y2, Color color, String type) {this.x1 = x1;this.y1 = y1;this.x2 = x2;this.y2 = y2;this.color = color;this.type = type;
}
public Shape(ImageIcon icon,int x1,int y1,int x2,int y2,String type)
{this.icon=icon;this.x1 = x1;this.y1 = y1;this.type=type;}public void draw(Graphics g) {g.setColor(color);if (type.equals("直线")) {	g.drawLine(x1, y1, x2, y2);} else if (type.equals("矩形")) {	g.fillRect(x1, y1, x2, y2);} else if (type.equals("圆")) {	g.drawOval(x1, y1, x2, y2);}else if(type.equals("图片")){g.drawImage(icon.getImage(),x1,y1,null);}else if(type.equals("五角星")){  g.drawLine((x1+x2)/2,y1,(x2+4*x1)/5,y2);g.drawLine((x1+x2)/2,y1,(x1+4*x2)/5,y2);g.drawLine(x1,(3*y1+2*y2)/5,x2,(3*y1+2*y2)/5);g.drawLine(x1,(3*y1+2*y2)/5,(x1+4*x2)/5,y2);g.drawLine((x2+4*x1)/5,y2,x2,(3*y1+2*y2)/5);}else if (type.equals("立方体")){int a=(x2+y2-x1-y2)/2;g.drawRect(x1, y1, x2-x1,y2-y1);g.drawLine(x1, y1, x1+a, y1-a);g.drawLine(x1+a, y1-a,x2+a, y1-a);g.drawLine(x2, y1, x2+a,y1-a);g.drawLine(x2, y2, x2+a, y2-a);g.drawLine(x2+a,y1-a,x2+a,y2-a);}
}}

 

更多推荐

java 给小画板加上重绘

本文发布于:2023-07-28 18:12:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1271337.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:画板   java

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!