2010-09-24 53 views
2

似乎GraphicsConfiguration類的.getBounds()方法沒有報告正確的值。Java Swing; Java GraphicsConfiguration.getBounds()返回的問題0

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

我得到以下值:

爲.getX()我得到:

Value = 1920 
Value = 0 

.getY()我得到:

Value = 0 
Value = 0 

我正在使用Nvidia的Twinview在Linux平臺上運行。這是Swing之外的錯誤嗎?

回答

3

這不是一個錯誤。值是正確的。

您正在獲取每個屏幕的邊界,然後獲取每個邊界的X和Y座標,即左上角的座標。 GraphicsConfiguration.getBounds()返回定義屏幕邊界的RectangleRectangle.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 
+1

+1。 Rectangle實現toString,所以只需要'System.out.println(... getBounds());'來查看整個交易。 – 2010-09-24 17:43:46

+0

Thansk傢伙!就是這樣! – 2010-09-24 17:48:45