我正在尝试截取窗口屏幕截图以将其用作应用程序中的背景。
这是我的代码:
try {
Robot robot = new Robot();
Rectangle captureSize = new Rectangle(new MainWindow().getX(), new MainWindow().getY(), MainWindow.getWIDTH(), MainWindow.getHEIGHT());
RenderManager.backgroundGUIs = robot.createScreenCapture(captureSize);
GUIManager.ThisGui = new GUI("inventory", null, false);
} catch(AWTException e) {
System.err.println("Error taking screenshot!");
}
这些是 MainWindow().getY() 和 MainWindow().getX() 方法:
public int getX() {
return (int) frame.getLocationOnScreen().getX();
}
public int getY() {
return frame.getY();
}
现在...它工作正常,但有一个问题。 frame.getLocationOnScreen().getX()
和 frame.getX()
返回带有窗口边框的位置,该位置不必位于屏幕中。好吧,我可以手动计算边框大小来减去它,但是从 Windows 7 到 Windows 8,从 Windows 8 到 Mac 等,窗口边框会发生变化。
那么...有没有一种方法可以获取框架位置或窗口边框大小来计算我需要的内容?
感谢您的时间和答复!
最佳答案
就这么简单:
x = frame.getRootPane().getX();
此外,您还可以根据根 Pane 进行所有其他计算,只需删除框架即可。
正如预期的那样,根 Pane 是任何框架/窗口/对话框等内的顶级容器。它也包括菜单栏。
关于Java - 获取无边框窗口位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29951166/