java中怎么获取一个窗口移动后的坐标

本文介绍了一种使用Java SwingUtilities类中的convertPointToScreen方法来获取移动后窗口坐标的技巧。通常的方法只能得到初始坐标,而此方法能准确获得窗口移动后的最新位置。

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

在网上查了很多,很久发现都是getX()等常用的API方法,这些方法根本不能获取一个移动后的窗口的坐标。获取的都是窗口的初始坐标。窗口移动后,他的坐标变化了,用这些方法是不能获取的。后来找高手在谷歌上用英文查询才查到下面这些方法。我相信肯定能帮助不少人。不用像我一样话费很久才能解决。

void javax.swing.SwingUtilities.convertPointToScreen(Point p, Component c)

Convert a point from a component's coordinate system to screen coordinates.

Parameters:

p a Point object (converted to the new coordinate system)

c a Component object

eg: Point pt = new Point();

pt.x = graphicsPanel.getX();

pt.y = graphicsPanel.getY();

SwingUtilities.convertPointToScreen(pt, graphicsPanel.getParent());

Rectangle captureSize = new Rectangle(pt.x,pt.y,graphicsPanel.getWidth(),

graphicsPanel.getHeight());

◆Point convertPoint(Component source, int x, int y, Component estination)

◆Point convertPoint(Component source, Point aPoint, Component destination)

将一个组件上的点坐标转换成另一个组件上的坐标点。

◆void convertPointFromScreen(Point p, Component c)

将一个屏暮坐标点转换成一个组件的坐标点.

◆void convertPointToScreen(Point p, omponent c)

将一个组件上的坐标点转换成屏暮坐标。

◆Rectangle convertRectangle(Component source, Rectangle aRectangle, Component destination)

将一个组件上的矩形坐标转换成另一个组件上的矩形坐标.

我用的是convertPointToScreen(Point p, Component c)方法,上面是我的程序所用的那部分内容。这个函数能够根据相对性转化出移动后窗口的坐标(就是移动后窗口左上角坐标),然后我用Rectangle类截取窗口图片。

不懂的还可以由javax.swing.SwingUtilities.convertPointToScreen查询javaAPI来具体了解 希望能够帮助读者

javascrtpt 实现窗口拖拽、移动功能、显示坐标代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html <head runat="server"> <title></title> [removed] var mouseX, mouseY; var objX, objY; var isDowm = false; //是否按下鼠标 function mouseDown(obj, e) { obj.style.cursor = "move"; objX = div1.style.left; objY = div1.style.top; mouseX = e.clientX; mouseY = e.clientY; isDowm = true; } function mouseMove(e) { var div = document.getElementById("div1"); var x = e.clientX; var y = e.clientY; if (isDowm) { div.style.left = parseInt(objX) + parseInt(x) - parseInt(mouseX) + "px"; div.style.top = parseInt(objY) + parseInt(y) - parseInt(mouseY) + "px"; document.getElementById("span1")[removed] = "x:" + div.style.top + " " + "y:" + div.style.left; } } function mouseUp(e) { if (isDowm) { var x = e.clientX; var y = e.clientY; var div = document.getElementById("div1"); div.style.left = (parseInt(x) - parseInt(mouseX) + parseInt(objX)) + "px"; div.style.top = (parseInt(y) - parseInt(mouseY) + parseInt(objY)) + "px"; document.getElementById("span2")[removed] = "x:" + div.style.top + " " + "y:" + div.style.left; mouseX = x; rewmouseY = y; div1.style.cursor = "default"; isDowm = false; } } [removed] </head> <body> <span id="span1"></span></br><span id="span2"></span></br> <div id="div1" Green; border: 1px solid red; height: 300px; top: 100px; left: 100px; width: 300px; position: absolute;" </div> </body> </html>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值