java学习总结(画板重绘)

学习重绘后的总结

1.为什么要重绘?
 我们在窗体中画了图形,当我们最小化窗体或者弹出颜色选择器时,原来的图形就不见了,于是我们需要学习重绘。

2.重绘就是把原来画的图形重新在窗体中画出来,即当我们最小化窗体或者弹出颜色选择器时,原来的图形还表现在窗体上。

3.重绘的实现:
 1.重绘运用到了我上一节课学的自定义队列。我们把我们所画的图形都存入队列中,
 当最小化窗体或者弹出颜色选择器时,再将之前画好的(保存在队列中的)图形对象重绘在窗体中。
 2.我的简易画板:
  1.建立一个窗体,带有可选择画图形的JRadioButton以及可以选择颜色的按钮。
  2.建立一个画图形的接口,写好画各种图形的实现该接口的类。
  如:
  

/**
   * 定义一个画图形的接口
   */
  public interface IDraw {
  public void draw(java.awt.Graphics g);
  }

   

/**
 * 一个画直线的实现类
 */  
import java.awt.Color;
import java.awt.Graphics;

public class ImpLine implements IDraw{
 //定义坐标属性
 private int x1,y1,x2,y2;
 //定义颜色属性
 private java.awt.Color color;
 //定义一个无参构造函数
 public ImpLine(){}
 //定义一个带坐标值和颜色参数的参构造函数
 public ImpLine(int x1,int y1,int x2,int y2,Color color){
  this.x1 = x1;
  this.y1 = y1;
  this.x2 = x2;
  this.y2 = y2;
  this.color = color;
 }
 public void draw(Graphics g) {
  g.setColor(color);
  g.drawLine(x1, y1, x2, y2);
 }

}

   
  
  3.定义一个自定义队列接口。
  4.定义一个实现自定义队列接口的实现类。
  
  5.添加事件监听器以及事件处理类。
  6.重绘需要用到paint(java.awt.Graphics g)方法,在含有主函数的类中
  

 //重绘的方法,这个方法会自动被调用
   public void paint(java.awt.Graphics g){
    //调用父类中的重绘方法
    super.paint(g);
    //利用循环,把存储在队列中的图形一个个画出来
   }

  
重绘的总体思路是每画一个图形,就将该图形对象存入队列中,重绘就是将存储在队列中的图形对象再读取并画出来。
所以需要一个实现了自定义队列接口的类,用这个类实例化一个存储图形对象的对象,我们每画一个图形,就将该图形对象存入其中。

你可能感兴趣的:(java)