java & amp; Plein écran sur plusieurs moniteurs
Un extrait de mon application Java:
JFrame f = new JFrame();
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
gd.setFullScreenWindow(f);
Donc, ce qu'il fait est de faire de l'auto en plein écran. Maintenant, la chose étrange est que le programme est en plein écran, mais sur un seul écran!
E. g. J'ai un windows vista système à deux écrans qui sont combinés dans un seul bureau.
Que faire automatiquement le laisser passer en mode plein écran sur tous les écrans?
Ok j'ai essayé ça:
import java.awt.image.ColorModel;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
class grdevs
{
public static void main(String [] args)
{
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
for(GraphicsDevice curGs : gs)
{
GraphicsConfiguration[] gc = curGs.getConfigurations();
for(GraphicsConfiguration curGc : gc)
{
Rectangle bounds = curGc.getBounds();
ColorModel cm = curGc.getColorModel();
System.out.println("" + bounds.getX() + "," + bounds.getY() + " " + bounds.getWidth() + "x" + bounds.getHeight() + " " + cm);
}
}
}
}
mais elle donne:
0.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
0.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
0.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
0.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
0.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
0.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
1024.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
1024.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
1024.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
1024.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
1024.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
1024.0,0.0 1024.0x768.0 DirectColorModel: rmask=ff0000 gmask=ff00 bmask=ff amask=0
E. g I pourrait s'attendre à un appareil capable de 2048x768 comme ils sont combinés en un seul (j'ai cliqué sur "étendre le bureau").
source d'informationauteur Folkert van Heusden
Vous devez vous connecter pour publier un commentaire.
Vous pourriez essayer:
Cela devrait calculer la largeur totale de plusieurs écrans. Évidemment, il ne supporte alignés horizontalement écrans dans le formulaire ci-dessus - que vous auriez à analyser les limites des configurations graphiques pour gérer d'autres moniteur alignements (dépend de la façon dont les balles que vous voulez faire).
Edit: Et puis définissez la taille de votre cadre:
f.setSize(width, height);
Plus de solution générale de Cendres code de l'est à l'union les limites de toutes les configurations graphiques
Cela fonctionnera pour les alignés verticalement, les moniteurs ainsi qu'à l'horizontale.
Ce n'est pas ce "setFullScreenWindow". C'est vraiment pour les applications qui veulent un accès plus direct à la mémoire de trame (meilleure performance) - comme un jeu en 3D n'en DirectX, par exemple. Ce genre de implique UN moniteur.
Voir cette autre réponse que j'ai fait: JDialog Pas l'Affichage en Mode plein ecran
Qui est le comportement normal lorsque vous agrandissez une fenêtre dans Windows lorsque vous avez deux moniteurs. Afin deux obtenir la pleine résolution de la taille, vous aurez besoin de regarder GraphicsConfiguration de vérifier chaque GraphicsDevice.
À l'aide de java.awt.Trousse d'outils, vous pouvez obtenir la taille de l'écran (tous les moniteurs):