SwingUtilities.convertPoint 方法的作用

本文深入解析SwingUtilities类中的convertPoint()方法,通过图形直观展示其核心功能,即坐标系原点转移,并通过代码实例演示其在获取鼠标位置时的应用。重点在于解释该方法如何实现坐标转换,及其在开发中解决实际问题的能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SwingUtilities类是Swing组件内部使用的实用工具,它提供了许多的涉及计算、转换、访问控制、布局等方面的方法。这里我们只讨论它的一个方法public static Point convertPoint(Component source,Point aPoint,Component destination) ;要想理解这个方法,利用图形的方式是最好不过了。如下图:
[img]http://www.kutoku.info/images/java/100817/SwingUtilities.png[/img]
我们假设最大的容器Container为destination,显示图像的JLabel为source,我们给source增加鼠标监听事件,那么aPoint是指鼠标在source的位置。当我们点击图片上箭头指的位置,aPoint的x值和y值都为0,Pont destPoint = SwingUtilities.convertPoint(Component source,Point aPoint,Component destination) ;destPoint的x值和y值分别是:39 和 86。

我们再用程序来解释这个方法。我们给Component source增加鼠标监听方法,当有鼠标点击source的左上角(上图箭头所指位置)时,触发public void mousePressed(MouseEvent event)方法,我们通过event拿到aPoint,然后我们就可以拿到aPoint的x(event.getPoint().x)和y(event.getPoint().y)值,根据上图他们分别是0,0;而destPoint的值,则是39,86
[code]
public void mousePressed(MouseEvent event) {
// 得到当前坐标点
destPoint = SwingUtilities.convertPoint(dragPicLabel, event.getPoint(),
dragPicLabel.getParent());
// 点击source的左上角(图片上箭头指向),输出 0:0
System.out.println(event.getPoint().x + " : " + event.getPoint().y);
// 点击source的左上角(图片上箭头指向),输出 39 : 86
System.out.println(destPoint.x + " : " + destPoint.y);
}
[/code]
现在明白了吧,[b]SwingUtilities.convertPoint(Component source,Point aPoint,Component destination) 的目的就是将坐标系的原点从source转移到destination。根据原来的鼠标位置aPoint,获得坐标转以后的鼠标位置destPoint[/b]。这个方法在获得鼠标移动距离,画坐标系,划线时会经常用到。

文章地址:[url]http://javapub.iteye.com/blog/739146[/url]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值