Lorsque mon programme démarre, la fenêtre principale se place là où elle était lors de sa dernière fermeture. Je veux modifier ce comportement de sorte que si la fenêtre est hors-écran (ou partiellement hors-écran), elle se déplace complètement sur l'écran.Java: Comptabilisation des barres de tâches/menubars/etc en plaçant une fenêtre sur le bureau?
J'ai ce fonctionnement parfaitement. Voici le code:
int x = gameConfig.windowX;
int y = gameConfig.windowY;
int width = gameConfig.windowWidth;
int height = gameConfig.windowHeight;
if(x < 0) x = 0;
if(y < 0) y = 0;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
if(x + width > screenSize.width) x = screenSize.width - width;
if(y + height > screenSize.height) y = screenSize.height - height;
if(width > screenSize.width) width = screenSize.width;
if(height > screenSize.height) height = screenSize.height;
this.setLocation(x, y);
this.setSize(width, height);
if(gameConfig.screenMaximized) {
this.setExtendedState(getExtendedState() | MAXIMIZED_BOTH);
}
Cela fonctionne comme prévu, mais avec une grande exception; il ne tient pas compte des barres de tâches. Sur les fenêtres, si la fenêtre est au-delà du bas de l'écran, ce code le corrigera, mais il laisse toujours un morceau de la fenêtre bloqué par la barre des tâches.
Je ne suis pas sûr comment faire cela. Y a-t-il un moyen de demander à java des barres de tâches dans le système, et quelle est leur largeur/hauteur?
Merci qui a parfaitement fonctionné. Savez-vous comment l'obtenir afin que Java reflète la taille d'écran totale de mes deux moniteurs quand j'appelle getScreenSize()? En ce moment, il revient 1600x1200, quand il est vraiment 3200x1200, réparti sur deux moniteurs.
L'API Java suggère que GraphicsConfiguration.getBounds() ferait l'affaire, mais cela renvoie toujours le rectangle {0, 0, 1600, 1200}.
"La barre des tâches peut être sur n'importe quel bord de l'écran" - c'est ma barre des tâches dont vous parlez (à droite de l'écran). Trop d'applications * m'ont forcé à le déplacer vers la gauche (arghh!), Et certaines ne fonctionnent pas correctement. –
Ouais - Sun ne nous a pas aidé, attendant Java 4 pour inclure la possibilité de déterminer où était la chose. –