Comment se JFrame taille de la fenêtre en Java ne produit pas la taille de la fenêtre spécifiée?

StackOverflow https://stackoverflow.com/questions/2445971

  •  20-09-2019
  •  | 
  •  

Question

Je suis en train de déconner essayer de faire un jeu en ce moment, mais je l'ai eu ce problème avant aussi. Lorsque je spécifie une taille de fenêtre spécifique (1 024 x 768, par exemple), la fenêtre produite est juste un peu plus grand que ce que je spécifié. Très ennuyant. Y a-t-il une raison à cela? Comment puis-je corriger si la fenêtre créée est en fait la taille que je veux au lieu d'être juste un peu plus grand? Jusqu'à présent, je suis toujours juste retourné et ajustée manuellement la taille de quelques pixels à la fois jusqu'à ce que je suis arrivé le résultat que je voulais, mais vieillit. S'il y avait même une formule que je pourrais utiliser cela me dire combien de pixels je besoin d'ajouter / soustraire de ma ma variable qui serait excellent!

P.S. Je ne sais pas si mon système d'exploitation pourrait être un facteur dans ce domaine, mais je me sers W7X64.

private int windowWidth = 1024;
private int windowHeight = 768;

public SomeWindow() {
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(windowWidth, windowHeight);
    this.setResizable(false);
    this.setLocation(0,0);
    this.setVisible(true);
}
Était-ce utile?

La solution

  

Je veux que le cadre totale que Windows   crée à la taille exacte je précise

Je ne comprends pas votre problème. Diffusez votre SSCCE qui montre le problème.

Si je lance code comme:

frame.setResizable(false);
frame.setSize(1024, 768);
frame.setVisible(true);
System.out.println(frame.getSize());

Il affiche java.awt.Dimension [width = 1024, height = 768], est-ce pas ce que vous attendez?

  

S'il y avait même une formule pourrait   qui aggraveraient me dire combien de pixels   Je avais besoin d'ajouter / soustraire de mon mon   variable qui serait excellent!

Peut-être que vous faites référence à l'espace occupé par la barre de titre et les frontières?

import java.awt.*;
import javax.swing.*;

public class FrameInfo
{
    public static void main(String[] args)
    {
        GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
        Rectangle bounds = env.getMaximumWindowBounds();
        System.out.println("Screen Bounds: " + bounds );

        GraphicsDevice screen = env.getDefaultScreenDevice();
        GraphicsConfiguration config = screen.getDefaultConfiguration();
        System.out.println("Screen Size  : " + config.getBounds());

        JFrame frame = new JFrame("Frame Info");
        System.out.println("Frame Insets : " + frame.getInsets() );

        frame.setSize(200, 200);
        System.out.println("Frame Insets : " + frame.getInsets() );
        frame.setVisible( true );

        System.out.println("Frame Size   : " + frame.getSize() );
        System.out.println("Frame Insets : " + frame.getInsets() );
        System.out.println("Content Size : " + frame.getContentPane().getSize() );
     }
}

Autres conseils

Quand vous dites la taille de la fenêtre obtenue est pas demandé à l'un, vous parlez de la fenêtre, avec ses décorations?

En effet, la taille de la fenêtre est définie sans décoration de fenêtre spécifique OS.

Essayez d'ajouter

this.setUndecorated(true);

avant la balise

this.setVisible(true);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top