Java - 获取无边框窗口位置

标签 java position window border frame

我正在尝试截取窗口屏幕截图以将其用作应用程序中的背景。

这是我的代码:

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/

相关文章:

java - 用于匹配用户输入中的字符串文字的正则表达式问题

java - JRBeanCollectionDataSource - 类 'notas' 上的未知属性 'class model.Notas'

css - 桌面与移动设备上的背景图片定位

python - 已成功安装 Python 3.1.2,但当使用命令检查它是否安装在我的电脑上时,它无法识别命令集

java - 调整浏览器窗口大小后无法从元素获取文本(Chrome)

java - 在 gradle 和 maven 之间创建共同点

CSS float right 向右和向下移动元素(我不想向下)。

Java - 设置 JComponent 的确切位置

python - 如何在 Windows 中用 python 创建服务?

java对象转json字符串构建jqmobile嵌套列表