似乎GraphicsConfiguration类的.getBounds()方法没有报告正确的值。
GraphicsDevice[] gdArr = GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices();
int width = 0;
for (GraphicsDevice gd : gdArr)
{
if (gd.getType() == gd.TYPE_RASTER_SCREEN)
System.out.println("Value is: " + gd.getDefaultConfiguration().getBounds().getX());
}
我有两台显示器:运行1920 * 1080和1280 * 1080。
我得到以下值:
for .getX()我得到了:
Value = 1920
Value = 0
表示.getY()我得到了:
Value = 0
Value = 0
我正在使用Nvidia的Twinview在Linux平台上运行。这是Swing之外的错误吗?
答案 0 :(得分:3)
这不是错误。值是正确的。
您正在获取每个屏幕的边界,然后您将获得每个边界的X和Y坐标,这是左上角的坐标。 GraphicsConfiguration.getBounds()
返回定义屏幕边界的Rectangle
。 Rectangle.getX()
和Rectangle.getY()
返回矩形左上角的坐标。 Rectangle.getWidth()
和Rectangle.getHeight()
返回大小。
你有两台显示器。以下是每个监视器的界限:
1: X = 0 , Y = 0, Width = 1920, Height = 1080 2: X = 1920, Y = 0, Width = 1280, Height = 1080