鼠标点击画点程序

思路:

1.创建一个Frame作为载体画图.

2.Frame中添加鼠标事件.

3.创建一个容器ArrayList,用来存放鼠标点击的点.

4.每当鼠标点击时就生成一个Point对象,将Point对象添加到一个容器ArrayList中去.然后重画界面.

5.重画时用重新调用Paint方法.Paint方面中一次用Iterator遍历所以的Point点对象,然后将他们一次画出.


import java.util.*;
import java.awt.*;
import java.awt.event.*;

public class TestPaint {
	public static void main(String args[]) {
		new JackFrame().launchFrame();
	}
}

class JackFrame extends Frame {
	ArrayList al;
	public void launchFrame() {
	MouseL ml=new MouseL();
	al=new ArrayList(); //Generics: ArrayList<Point> al=new ArraryList<Point>();
	//如果写成ArrayList al=new ArrayList<Point>();会提示不安全,但是不会出错.
	setBounds(200,200,400,400);
	setVisible(true);
	addMouseListener(ml);
	}
	public void paint(Graphics g) {
		Iterator<Point> ip=al.iterator(); //如果这里写成Iterator ip=al.iterator();那么Iterator
		//ip还是Object型,只是al.iterator()给它了一个Point类型而已. 可以这样理解.Iterator<Point>就是
		//把返回的容器内容自动转换为Point
		Point p;
		while(ip.hasNext()) {
			p=ip.next();
			g.setColor(Color.red);
			g.drawOval((int)p.x,(int)p.y,5,5);
		}
	}
}

class MouseL extends MouseAdapter {
	public void mouseClicked(MouseEvent e) {
		JackFrame jf=(JackFrame)e.getSource(); //这里我们可以用e.getSource()获得事件对象的引用,就可以操控对象中的成员变量.
                Point p1=new Point();   //我们之前没有用该方法,用的是将对象句柄传给监听器...是因为那时要监听的总类很多....这个变量相对单一
		p1.x=e.getX();          //反正只要能获得对象引用就能够进行操作....无所谓.
		p1.y=e.getY();
		jf.al.add(p1);
		jf.repaint();
	}
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值