41 votes

Comment obtenir la largeur de l'écran en java ?

Quelqu'un sait-il comment obtenir la largeur de l'écran en java ? J'ai lu quelque chose à propos d'une méthode de la boîte à outils mais je ne suis pas sûr de ce que c'est.

Merci, Andrew

77voto

Ben McCann Points 3755
java.awt.Toolkit.getDefaultToolkit().getScreenSize()

18voto

Lawrence Dol Points 27976

Voici les deux méthodes que j'utilise, qui tiennent compte des moniteurs multiples et des insertions dans la barre des tâches. Si vous n'avez pas besoin des deux méthodes séparément, vous pouvez, bien sûr, éviter de recevoir deux fois la configuration graphique.

static public Rectangle getScreenBounds(Window wnd) {
    Rectangle                           sb;
    Insets                              si=getScreenInsets(wnd);

    if(wnd==null) { 
        sb=GraphicsEnvironment
           .getLocalGraphicsEnvironment()
           .getDefaultScreenDevice()
           .getDefaultConfiguration()
           .getBounds(); 
        }
    else { 
        sb=wnd
           .getGraphicsConfiguration()
           .getBounds(); 
        }

    sb.x     +=si.left;
    sb.y     +=si.top;
    sb.width -=si.left+si.right;
    sb.height-=si.top+si.bottom;
    return sb;
    }

static public Insets getScreenInsets(Window wnd) {
    Insets                              si;

    if(wnd==null) { 
        si=Toolkit.getDefaultToolkit().getScreenInsets(GraphicsEnvironment
           .getLocalGraphicsEnvironment()
           .getDefaultScreenDevice()
           .getDefaultConfiguration()); 
        }
    else { 
        si=wnd.getToolkit().getScreenInsets(wnd.getGraphicsConfiguration()); 
        }
    return si;
    }

16voto

Pacerier Points 15960

La zone de travail est la zone du bureau de l'écran, à l'exclusion des barres de tâches, des fenêtres ancrées et des barres d'outils ancrées.

Si ce que vous voulez est la "zone de travail" de l'écran, utilisez ceci :

public static int GetScreenWorkingWidth() {
    return java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().width;
}

public static int GetScreenWorkingHeight() {
    return java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().height;
}

5voto

tangens Points 17733

Le code suivant devrait le faire (je ne l'ai pas essayé) :

GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
gd.getDefaultConfiguration().getBounds().getWidth();

éditer :

Pour les moniteurs multiples, vous devez utiliser le code suivant (tiré de l'application javadoc de java.awt.GraphicsConfiguration :

  Rectangle virtualBounds = new Rectangle();
  GraphicsEnvironment ge = GraphicsEnvironment.
          getLocalGraphicsEnvironment();
  GraphicsDevice[] gs =
          ge.getScreenDevices();
  for (int j = 0; j < gs.length; j++) { 
      GraphicsDevice gd = gs[j];
      GraphicsConfiguration[] gc =
          gd.getConfigurations();
      for (int i=0; i < gc.length; i++) {
          virtualBounds =
              virtualBounds.union(gc[i].getBounds());
      }
  }

5voto

Boîte à outils a un certain nombre de cours qui pourraient vous aider :

  1. getScreenSize - taille de l'écran brut
  2. getScreenInsets - obtient la taille de la barre d'outils, du dock
  3. getScreenResolution - ppp

Nous finissons par utiliser 1 et 2, pour calculer la taille maximale utilisable de la fenêtre. Pour obtenir la GraphicsConfiguration appropriée, nous utilisons

GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0].getDefaultConfiguration();

mais il existe peut-être des solutions plus intelligentes à plusieurs moniteurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X