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

AWT/Swing Java Discussion :

GridLayout probleme de marge et dimension


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Par défaut GridLayout probleme de marge et dimension
    Bonjour,

    Je bosse sur un démineur.
    Je voulais faire un gridlayout de boutons malheureusement le gridlayout me met une marge tout à droite et en bas de ma fenetre et cela change tout le temps selon la taille de la fenêtre.

    J'ai essayé de jouer avec Dimension de preferredLayoutSize de gridlayout mais sans effet.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Salut,

    peut être que lorsque tu renseignes tes coordonnées (X, Y) tu ne pars pas de 0 ?

    Mets nous un peu de ton code....

    ps : autant pour moi j'avais pas vu le fichier java.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Par défaut
    Salut merci de ta réponse,

    En fait je ne mets pas de coordonnées c'est gridLayout qui est censé gérer le positionnement en mettant les boutons dans l'espace mais là il est pas content

  4. #4
    Membre éclairé Avatar de pendoRa
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Mai 2007
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2007
    Messages : 317
    Par défaut
    Pour développer un démineur, il ne serait pas plus judicieux d'utiliser le GridBagLayout ? Ainsi tu place chaque composant (boutons) a sa place avec une boucle for . Je l'avais fait pour une calculatrice, et c'était vraiment bien performant.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Par défaut
    J"ai pris au plus simple car gridbaglayout m'avait paru compliqué pour la tâche à faire mais la du coup je sais plus en effet.

    Je vais quand même essayer encore gridLayout je viens de voir qu'il fallait faire validate après preferredSize pour mettre à jour la grille.

  6. #6
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Bonjour,

    Le gridLayout donne à tout les éléments EXACTEMENT la même taille.
    Imaginons un fenêtre de taille 100 avec 10 éléments en longueur. Tout les éléments feront 10 pixels de large.
    Maintenant si la fenêtre fait 101 pixel, il y aura un écart de 1 pixel à droite, et c'est "normal". (idem pour 102,103,...,109).

    Il faut donc que tu t'arrange pour que la taille de ta fenêtre colle parfaitement avec les éléments.

    Soit tu le fais à la main, soit tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    maFenetre.pack();//Le fenêtre prend la taille des composants qui la compose
    maFenetre.setVisible(true);
    ps : Même dilemme avec le GridBagLayout sauf que l'écart se fait de tout les coté. Ou alors on peut faire en sorte qu'une des lignes et qu'une des colonnes soit plus grande que les autres (mais c'est moche )

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Par défaut
    Bonjour,

    En fait j'ai fait en sorte déjà que mes dimensions soit correctes mais cela ne marche pas. J'ai fait (504, 500) avec 9 colonnes et 10 lignes et ça ne marche pas.

    Pack() enlève les bordures mais ne garde pas les mêmes dimensions.


    Je voudrais que pour n'importe quelle dimension je n'ai pas de bordures et que je puisse aussi placer mon texte sous les boutons mais pour cela je dois connaitre les dimensions des boutons or ici elles ne sont pas calculable...

  8. #8
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    En fait j'ai fait en sorte déjà que mes dimensions soit correctes mais cela ne marche pas. J'ai fait (504, 500) avec 9 colonnes et 10 lignes
    Négatif. Tu faits le redimensionnement sur ta fenêtre. Celle-ci prend en compte les bordures gauche-bas-droite et le bandeau supérieur.
    Il faut faire le dimensionnement sur le panel principal de la fenêtre.

    je dois connaitre les dimensions des boutons or ici elles ne sont pas calculable...
    Tu connais le nombre de bouton, tu mets une dimension arbitraire à ta fenêtre, et tu as la dimension des boutons. Plus cas réajuster un peu la dimension du panel principal (cf-ci-dessus)

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Par défaut
    Ok merci je vais essayer ça !

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Par défaut
    Bon j'ai essayé mais ça ne marche toujours pas !

    voici mon code :
    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
    16
    17
    18
    19
    private void niveauFacile(){
    		this.setSize(500, 500);
    		PanneauFacile panFacile = new PanneauFacile();
    		panFacile.setSize( 500, 500);
     
    		GridLayout grille = new GridLayout(10,10,0,0);
    		panFacile.setLayout(grille);
     
    		JButton[] ensBoutons = new JButton[10*10];
    		for (int i=0; i<ensBoutons.length; i++){
    			ensBoutons[i] = new JButton();
    			ensBoutons[i].setText(""+i);
    			panFacile.add(ensBoutons[i]);
    		}
    		panFacile.validate();
    		this.add(panFacile);
    		this.validate();
     
    	}

    Et mon image sur laquelle on voit les lignes blanches a droite où sont censés être placés les boutons
    Images attachées Images attachées  

  11. #11
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Tout simplement :
    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
    16
    17
    private void niveauFacile(){
    		JPanel panFacile = new JPanel();
    		GridLayout grille = new GridLayout(10,10,0,0);
    		panFacile.setLayout(grille);
     
    		JButton[] ensBoutons = new JButton[10*10];
    		for (int i=0; i<ensBoutons.length; i++){
    			ensBoutons[i] = new JButton();
    			ensBoutons[i].setText(""+i);
    			panFacile.add(ensBoutons[i]);
    		}
     
    		this.setContentPane(panFacile);//Ajout du panel à la fenetre
                    panFacile.setPreferredSize(new Dimension(500, 500));//Et non setSize uniquement pour les JFrames
                    this.pack();//redimensionnement
     
    	}

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Par défaut
    Alors j'ai essayé et je trouve ça : on voit bien que les lignes ne sont pas bonnes...
    Au sinon je remplace un bouton dans la grille par une chaine de texte comme ça je n'ai pas à centrer mes g.drawString...
    Images attachées Images attachées  

  13. #13
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    Il n'y a pas de problème à ce que tout soit décalé. Il s'agit de JButton, au final ils sont alignés joliment et il suffit de cliquer dessus.

    Je n'ai pas compris le coup du g.drawString...
    Si tu utilise des composants, pourquoi t'embête tu à dessiner les String à la main , Utilise un simple JLabel ou modifie le texte de ton bouton.
    Soit tu fait tout à la main, soit tu fait tout avec des composants, évite le mélange (même si souvent inévitable)

    Bonne continuation

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 26
    Par défaut
    Je venais d'apprendre l'interface graphique du coup je connaissais pas les jLabel mais je vais faire avec et tout ira bien !

    Merci de ton aide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. probleme de marges avec pdftops
    Par pcouas dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 22/11/2007, 09h37
  2. Probleme de marge sur un bouton
    Par Hellx dans le forum Excel
    Réponses: 2
    Dernier message: 11/06/2007, 07h55
  3. probleme avec runge kutta dimension 4
    Par fab13 dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 14/11/2006, 21h47
  4. Probleme de marges
    Par xenos dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 01/08/2006, 18h10
  5. [IE-FIREFOX] petit probleme de marges CSS
    Par Delphy113 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 08/11/2005, 23h15

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