获取左上方监视器左上角位置的坐标

时间:2013-06-15 18:55:21

标签: java swing awt multiple-monitors

我正在尝试在屏幕捕获程序的多监视器设置中获取左上角位置的坐标。以下是我目前为该计划所获得的内容:

        int dwidth = 0, dheight = 0; //max dimensions of all monitors
    for (GraphicsDevice gd : GraphicsEnvironment
            .getLocalGraphicsEnvironment().getScreenDevices()) {
        if (gd == GraphicsEnvironment.getLocalGraphicsEnvironment()
                .getDefaultScreenDevice()) {
            minx = -width; //My attempt at finding the minimum X value did not work
        }
        dwidth += gd.getDisplayMode().getWidth();
        dheight += gd.getDisplayMode().getHeight();
    }

基本上我希望能够在所有监视器上运行我的程序。有关完整代码视图,请执行以下操作:https://gist.github.com/fletchto99/5788659

2 个答案:

答案 0 :(得分:1)

在Java中,图形库中的坐标系从屏幕的左上角开始。因此,您的代码应始终等同于简单地说明:0, 0

答案 1 :(得分:1)

您可以从GraphicDevice获取GraphicsEnvironment的列表。每个GraphicsDevice代表一个屏幕。

现在,你有很多选择......

您只需查看GraphicsDevices列表,只需查找具有最低x / y坐标的列表,或者您可以将它们全部组合到“虚拟屏幕”中,并简单地从中提取顶部/左侧坐标

例如......

public static Rectangle getVirtualScreenBounds() {

    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
    GraphicsDevice lstGDs[] = ge.getScreenDevices();

    Rectangle bounds = new Rectangle();
    for (GraphicsDevice gd : lstGDs) {

        bounds.add(gd.getDefaultConfiguration().getBounds());

    }

    return bounds;

}