MyMouseAdapter_17

来源:互联网 发布:淘宝支付宝怎么解绑 编辑:程序博客网 时间:2024/06/16 04:29

/**
*Title:MyMouseAdapter_17.java
*Description:1、鼠标的监听  2、Frame的paint()方法的运用。 3、泛型的运用 4、repaint()方法的运用 5、Point类的运用。
*@Copyright:
*@Company:
*@autor:firefly
*@version:1.0
*@time:2012.10.3
*/
import java.awt.*;
import java.awt.event.*;
import java.util.*;

public class MyMouseAdapter_17 {
 public static void main(String[] args) {
  new MyFrame("Drawing...");
 }
}

class MyFrame extends Frame {
 ArrayList<Point> points = null;//泛型要加上所要转换的是什么类型的,不然的话在编译时会出现提示:“使用了未经检查的或不安全的操作”,不过不影响运行。
 MyFrame(String s) {
  super(s);
  points = new ArrayList<Point>();
  setLayout(null);
  setBounds(300, 300, 400, 300);
  this.setBackground(new Color(204, 204, 255));//敲一个this.在eclipse中常用,可以给你一些错误的提示,如方法名忘记了等。在这里不用也是可以编译运行的。
  setVisible(true);
  this.addMouseListener(new Monitor());//设置鼠标监听MouseListener().
 }
 
 public void paint(Graphics g) {  //重写Container中的paint()方法。迭代器和paint()方法的综合运用。
  //当需要画的时候自动调用这个方法。如
  Iterator<Point> i = points.iterator();
  Color c = g.getColor();
  while(i.hasNext()) {
   Point p = i.next();            //如果在前面的三个地方都加上了<>在i前面就不用强制转换了。
   g.setColor(Color.blue);        //设置图形的颜色。
   g.fillOval(p.x, p.y, 10, 10);//画一个椭圆
  }
  g.setColor(c); //这里表现的是一种比较好的编程习惯,g本来就有颜色(黑色默认),你设置之后,把赋给原来的颜色。
 }

 public void addPoint(Point p) {   //将点加入到数组里面。
  points.add(p);
 }
}

class Monitor extends MouseAdapter { //对MyFrame实行监听这里用MouseAdapter比用MouseListener要好一点,因为MouseListener是一个接口,
 //实现接口的时候里面的第一种方法都要实现,每种方法都要写比较麻烦一些,而MouseAdapter中已经有所有5个方法的空的方法,你用哪个只需要重写一下就可以了
 public void mousePressed(MouseEvent e) {
  MyFrame f = (MyFrame)e.getSource();  //将Object 类强制转换为MyFrame.
  f.addPoint(new Point(e.getX(), e.getY()));//这里的Point()类:java.awt.Point。意为:在坐标空间中指定的 (x,y) 位置构造并初始化一个点。
  f.repaint();//repaint()先调用了Update()这个方法(实现双缓冲),再调用paint()方法。如果不用这个方法的话虽然点已经画过了,但是不能显现出来。
 }
}

原创粉丝点击