2014-06-25 6 views
0

Est-il possible que si je permute entre les deux modes et dessine des choses pour les ajuster afin qu'en mode fenêtré les choses semblent être dessinées comme en mode plein écran mais sont en fait plus petites ...Java - Plein écran et mode fenêtré

Alors que mon code:

Constructeur: GraphicsEnvironment gfxEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();

GraphicsDevice gfxDevice = gfxEnvironment.getDefaultScreenDevice();

private boolean fullscreen = true; // pas vraiment comme ça

if (réponse == JOptionPane.YES_OPTION) {

 setUndecorated(true); 
     setAlwaysOnTop(true); 
     DisplayMode getMode = gfxDevice.getDisplayMode(); 
     DisplayMode displayMode = new DisplayMode(getMode.getWidth(), getMode.getHeight(), getMode.getBitDepth(), getMode.getRefreshRate()); 
     gfxDevice.setFullScreenWindow(Frame.this); 
     gfxDevice.setDisplayMode(displayMode); 
     fullscreen = true; 
    } else { 
     setUndecorated(false); 
     setVisible(true); 
     setSize(800, 600); 
     setLocationRelativeTo(null); 
     setResizable(false); 
     fullscreen = false; 
    } 

Passer les écrans: if (fullscreen) {

 dispose(); 
     setUndecorated(false); 
     gfxDevice.setFullScreenWindow(null); 
     setSize(800, 600); 
     setLocationRelativeTo(null); 
     setVisible(true); 
     fullscreen = false; 
    } else { 
     setVisible(false); 
     dispose(); 
     setUndecorated(true); 
     gfxDevice.setFullScreenWindow(Frame.this); 
     fullscreen = true; 
    } 

tirage: tirage private void (Graphics g) {

g.setColor(Color.RED); 
    g.fillRect(0, 0, 400, 800); 
} 

Alors, comment puis-je ajuster le Rect? Merci :)

Répondre

0

Vous pouvez baser le dessin du rect sur la taille de l'écran. Donc basez-le sur une fraction de la largeur et de la hauteur de la fenêtre avec java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().width; et java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds().height; au lieu de valeurs de pixels fixes.

+0

Et comment puis-je dessiner exactement ce rect: (50, 30, 200, 350) si ma taille plein écran est 1600 et 900 et la taille de mon mode de fenêtre est 800 et 600? :) – user3751598

+0

Oh je viens de diviser la coordonnée x et la largeur du rect avec 2 et les coordonnées y avec 1.5 (je pense) donc j'ai pris ce code: float strechX = 1.0f, strechY = 1.0f; if (! Fullscreen) { strechX = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(). GetMaximumWindowBounds(). Largeur/largeur; strechY = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment(). GetMaximumWindowBounds(). Hauteur/HAUTEUR; } g.setColor (Color.RED); g.fillRect ((int) (0,0f/strechX), (int) (0,0f/strechY), (int) (100,0 f/strechX), (int) (200,0 f/strechY)); – user3751598

+0

C'est vraiment difficile à lire dans un commentaire mais ça a marché? Si oui, alors bon travail! Il est important de toujours adapter la taille de la vue à la taille de l'écran/de la fenêtre. Cela rend le code fastidieux mais produit des résultats cohérents. –