在网上查了很多,很久发现都是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来具体了解 希望能够帮助读者