重绘方法的重写利用

重绘是为了在画布上保留原始痕迹的一种方法,他的目的是用来保存你原始数据,以免退出再进入时数据的丢失。下面以代码举例:
import java.awt.Graphics;
import javax.swing.JFrame;
//继承Jframe来创建窗体
public class Repatine extends JFrame{
//数组的创建
MyShape[] my=null;
public void showUI(){
setSize(600,600);
setTitle("重绘");
setSize(600,600);
setResizable(false);
FlowLayout flo=new FlowLayout();
setLayout(flo);
setDefaultCloseOperation(3);
setVisible(true);
Graphics g=this.getGraphics();
//实例化对象
Paint pa=new Paint();
//属性的赋值
pa.g=g;
my=pa.ms;
//监听器的运用
this.addMouseListener(pa);
}
//重绘方法的实现
public void paint(Graphics g){
//引用父类Jframe的方法
super.paint(g);
for(int i=0;i<my.length;i++){
MyShape m=my[i];
if(m!=null)
//画实心圆
g.fillOval(m.x,m. y,m.x1,m.y1);
}
}
public static void main(String []args){
//实例化对象、以及方法的调用
Repatine rp=new Repatine();
rp.showUI();
}
}
//创建MyShape类用于保存数组数据
public class MyShape {
int x,y,x1,y1;
//构造函数的参数传递
public MyShape(int x,int y,int x1,int y1){
this.x=x;
this.y=y;
this.x1=x1;
this.y1=y1;

}
}
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class Paint implements MouseListener{
//定义属性和数组
Graphics g;
MyShape[] ms=new MyShape[50];
int count=0;
public void mouseClicked(MouseEvent e) {
int x=e.getX();
int y=e.getY();
g.fillOval(x, y, 50, 50);
//将得到的圆数据传递给数组ms[]并保存
MyShape m=new MyShape(x,y,50,50);
ms[count]=m;
count++;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值