2010-09-24 6 views
2

Il semble que la méthode .getBounds() de la classe GraphicsConfiguration ne signale pas les valeurs correctes.Java Swing; Problèmes avec Java GraphicsConfiguration.getBounds() renvoyant 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());     
     }    

J'ai deux moniteurs: en cours d'exécution 1920 * 1080 et 1280 * 1080.

Je reçois les valeurs suivantes:

pour .getX() Je reçois:

Value = 1920 
Value = 0 

pour .getY() je reçois:

Value = 0 
Value = 0 

Je cours sur une plateforme Linux avec Twinview de Nvidia. Est-ce un bug en dehors de Swing?

Répondre

3

Ce n'est pas un bug. Les valeurs sont correctes. Vous obtenez les limites de chaque écran, puis vous obtenez les coordonnées X et Y de chaque borne, qui est la coordonnée du coin supérieur gauche. GraphicsConfiguration.getBounds() renvoie Rectangle définissant les limites de l'écran. Rectangle.getX() et Rectangle.getY() renvoient les coordonnées du coin supérieur gauche du rectangle. Rectangle.getWidth() et Rectangle.getHeight() renvoient la taille.

Vous avez deux moniteurs. Voici les limites de chaque moniteur:

 
1: X = 0 , Y = 0, Width = 1920, Height = 1080 
2: X = 1920, Y = 0, Width = 1280, Height = 1080 
+1

+1. Rectangle implémente toString, alors essayez simplement System.out.println (... getBounds()); 'pour voir tout le deal. –

+0

Les gars de Thansk! C'était ça! –