Est-ce que quelqu'un sait comment vous obtiendrez la largeur d'écran en java? J'ai lu quelque chose sur une méthode de boîte à outils mais je ne sais pas trop ce que c'est.
Merci, Andrew
Java.awt.Toolkit.getDefaultToolkit().getScreenSize()
Voici les deux méthodes que j'utilise, qui représentent plusieurs moniteurs et encarts de barre des tâches. Si vous n'avez pas besoin des deux méthodes séparément, vous pouvez bien sûr éviter d'obtenir 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;
}
La zone de travail est la zone du bureau de l'affichage, à l'exclusion des barres des tâches, des fenêtres ancrées et des barres d'outils ancrées.
Si vous voulez 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;
}
Le code suivant devrait le faire (je ne l'ai pas essayé):
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice Gd = ge.getDefaultScreenDevice();
Gd.getDefaultConfiguration().getBounds().getWidth();
modifier:
Pour plusieurs moniteurs, vous devez utiliser le code suivant (extrait du 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());
}
}
Toolkit a un certain nombre de classes qui pourraient aider:
Nous finissons par utiliser 1 et 2 pour calculer la taille de fenêtre maximale utilisable. Pour obtenir la configuration graphique appropriée, nous utilisons
GraphicsEnvironment.getLocalGraphicsEnvironment().getScreenDevices()[0].getDefaultConfiguration();
mais il peut y avoir des solutions multi-écrans plus intelligentes.
L'OP voulait probablement quelque chose comme ça:
Dimension screenSize = Java.awt.Toolkit.getDefaultToolkit().getScreenSize();
Toolkit.getDefaultToolkit().getScreenSize().getWidth()
Un bon moyen de détecter si quelque chose se situe dans les limites visuelles est d'utiliser
Screen.getScreensForRectangle(x, y, width, height).isEmpty();
Il s'agit d'une amélioration de la solution multi-écrans publiée (ci-dessus) par Lawrence Dol. Comme dans sa solution, ce code représente plusieurs moniteurs et encarts de barre des tâches. Les fonctions incluses sont: getScreenInsets (), getScreenWorkingArea () et getScreenTotalArea ().
Changements par rapport à la version Lawrence Dol:
Code:
/**
* getScreenInsets, This returns the insets of the screen, which are defined by any task bars
* that have been set up by the user. This function accounts for multi-monitor setups. If a
* window is supplied, then the the monitor that contains the window will be used. If a window
* is not supplied, then the primary monitor will be used.
*/
static public Insets getScreenInsets(Window windowOrNull) {
Insets insets;
if (windowOrNull == null) {
insets = Toolkit.getDefaultToolkit().getScreenInsets(GraphicsEnvironment
.getLocalGraphicsEnvironment().getDefaultScreenDevice()
.getDefaultConfiguration());
} else {
insets = windowOrNull.getToolkit().getScreenInsets(
windowOrNull.getGraphicsConfiguration());
}
return insets;
}
/**
* getScreenWorkingArea, This returns the working area of the screen. (The working area excludes
* any task bars.) This function accounts for multi-monitor setups. If a window is supplied,
* then the the monitor that contains the window will be used. If a window is not supplied, then
* the primary monitor will be used.
*/
static public Rectangle getScreenWorkingArea(Window windowOrNull) {
Insets insets;
Rectangle bounds;
if (windowOrNull == null) {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
insets = Toolkit.getDefaultToolkit().getScreenInsets(ge.getDefaultScreenDevice()
.getDefaultConfiguration());
bounds = ge.getDefaultScreenDevice().getDefaultConfiguration().getBounds();
} else {
GraphicsConfiguration gc = windowOrNull.getGraphicsConfiguration();
insets = windowOrNull.getToolkit().getScreenInsets(gc);
bounds = gc.getBounds();
}
bounds.x += insets.left;
bounds.y += insets.top;
bounds.width -= (insets.left + insets.right);
bounds.height -= (insets.top + insets.bottom);
return bounds;
}
/**
* getScreenTotalArea, This returns the total area of the screen. (The total area includes any
* task bars.) This function accounts for multi-monitor setups. If a window is supplied, then
* the the monitor that contains the window will be used. If a window is not supplied, then the
* primary monitor will be used.
*/
static public Rectangle getScreenTotalArea(Window windowOrNull) {
Rectangle bounds;
if (windowOrNull == null) {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
bounds = ge.getDefaultScreenDevice().getDefaultConfiguration().getBounds();
} else {
GraphicsConfiguration gc = windowOrNull.getGraphicsConfiguration();
bounds = gc.getBounds();
}
return bounds;
}
Si vous avez besoin de la résolution de l'écran auquel un certain composant est actuellement affecté (quelque chose comme la plus grande partie de la fenêtre racine est visible sur cet écran), vous pouvez utiliser cette réponse .
Vous pouvez l'obtenir en utilisant AWT Toolkit .
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();