IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Java Discussion :

Attributs width et height de JFrame non exactes


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 22
    Par défaut Attributs width et height de JFrame non exactes
    Bonjour,

    Je me suis creusé la tête un petit bout de temps devant mon code avant de m'apercevoir que les attributs width et height, hérité de la classe JFrame, passés à la méthode setSize() ne donnent pas une fenêtre aux dimension exacte.

    Je veux afficher 13 x 13 carrés de 16 pixels de côté.

    Soit le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	// ...
    	this.width = 13*16;
    	this.height = 13*16;
    	this.setSize(this.width, this.height);
    	this.setVisible(true);
    Résultat : En largeur 12 carrés et et quelque pixels, en longueur 11 carrés et quelque pixels...

    Soit le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	// ...
    	this.width = 13*16 + 50;		// Le "50" est arbitraire
    	this.height = 13*16 + 50;
    	this.setSize(this.width, this.height);
    	this.setVisible(true);
    Résultat : En largeur comme en longueur 13 carrés mais une bordure grise...

    Le tout en images, avec le premier bout de code :


    Avec le second bout de code :


    Ma question:
    Comment afficher 13 x 13 carrés de 16 pixels de côté, ni plus, ni moins sans bidouillage ?

    Merci

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu raisonne à l'envers. C'est la taille du panneau qui se trouve dans ta fenetre qu'il faut dimensionner. Ensuite, il faut demander à ta fenetre de prendre une taille qui permet d'afficher exactement tout ce qu'elle contient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    // Cette classe contient votre grille
    public class GrilleDAffichage extends JPanel{
        public GrilleDAffichage(){
            setMinimumSize(new Dimension(13*16,13*16));
            setPreferedSize(new Dimension(13*16,13*16));
        }
    }
    public class MaFrame extends JFrame {
    //......
         GrilleDAffichage affichage = new GrilleDAffichage();
         setContentPane(affichage);
         pack();
         setVisible(true);
    }

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2010
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2010
    Messages : 24
    Par défaut
    Après correction du code, nous avons toujours un problème d'affichage.

    Correction du container :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Container extends JPanel
    {
    	public Container(Window window, int tileHeight, int tileWidth)
    	{
    		this.window = window;
    		this.tileHeight = tileHeight;
    		this.tileWidth = tileWidth;
    	        this.window.setContainer(this);
                    setMinimumSize(new Dimension(13*16,13*16) );
                    setPreferredSize(new Dimension(13*16,13*16) );
            }
    }
    Correction de window :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class Window extends JFrame
    {
    	public void display()
    	{	
    		this.setLocationRelativeTo(null);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		setResizable(false);
    		this.setContentPane(this.container);
                    this.pack();
    		this.setVisible(true);
    	}
    }
    Résultat :



    La fenêtre affiche bien les 13 tiles en largeur, mais toujours pas en hauteur, et à la place, il y a une bande grise.

Discussions similaires

  1. paramètres width et height window.open non pris en compte
    Par Joauc dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 21/05/2012, 16h12
  2. [Débutant]attributs "width"/"height" sur un lien
    Par Ghurdyl dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 21/10/2007, 13h59
  3. Problème d'utilisation des attributs width et height avec une image distante
    Par Ptit_Mouss dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 21/09/2006, 15h40
  4. Attributs d'un record en property non modifiables
    Par WebPac dans le forum Langage
    Réponses: 15
    Dernier message: 11/04/2005, 12h59
  5. [W3C] [Debutant] valid. code xhtml et attributs width et align
    Par Marc_3 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 08/04/2005, 07h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo