/*
2015年3月21日21:35:47
程序目的:这是窗体画圈的泛型版。使用泛型的好处
装入集合的类型都被当作Object对待,从而失去了自己的实际类型。
从集合中取出时往往需要转型,效率低,容易产生错误。
解决办法:
在定义集合的同时定义集合中的对象的类型
优点:
增强程序的可读性和稳定性。
注意查看本博文的附件,便于理解鼠标事件模型
*/
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class MyMouseAdapterGeneric {
public static void main(String[] args) {
new MyFrame("Drawing...");
}
}
class MyFrame extends Frame {
ArrayList<Point> points = null;
public MyFrame(String title) {
super(title);
points = new ArrayList<Point>();
setBounds(200, 300, 600, 400);
addMouseListener(new MyAdapter());
setVisible(true);
}
public void paint(Graphics g) {
Iterator<Point> it = points.iterator();
Color c = g.getColor();
g.setColor(Color.BLUE);
while (it.hasNext()) {
Point p =it.next();
g.fillOval(p.x, p.y, 10, 10);
}
g.setColor(c);
}
public void addPoint(Point p) {
points.add(p);
}
}
class MyAdapter extends MouseAdapter {
public void mouseClicked(MouseEvent e) {
MyFrame mf = (MyFrame)e.getSource();
mf.addPoint(e.getPoint());
mf.repaint();
}
}