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 :

Difficulté pour centrer une main frame


Sujet :

AWT/Swing Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Par défaut Difficulté pour centrer une main frame
    Bonjour à tous!
    Juste vous soumettre une difficulté que je rencontre en ce moment depuis quelques temps,et que je ne suis pas encore arrivé à résoudre!
    J'utilise une Main Frame, que ne réussi pas à centrer jusque là. A l'exécution, la fenêtre s'affiche dans le coin gauche , au bas de l'écran. Mon bout de code est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    initComponents();
            Dimension dimension = new  Dimension(1000, 700);
            Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
            Rectangle frame = getFrame().getBounds();
            this.getFrame().setPreferredSize(dimension);
            this.getFrame().setResizable(false);
            this.getFrame().setLocation((screen.width - frame.width)/2, (screen.height - frame.height)/2);

    Je serai heureux de recevoir votre aide pour la résolution de ce problème que j'ai depuis maintenant un moment. Merci d'avance et très bonne journée à tous!!!!

  2. #2
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    Marche pas ça ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        initComponents();
        this.getFrame().setPreferredSize(new Dimension(1000, 700));
        this.getFrame().setResizable(false);
        this.getFrame().setLocation(null);
    Bon, après, appeler 3 fois this.getFrame...

    j'écrirais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        initComponents(); // si ça sert à quelque chose
        setPreferredSize(new Dimension(1000, 700));
        setResizable(false);
        setLocation(null);
    et je m'arrangerais pour qu'autour tout permette cela.

  3. #3
    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 : 45
    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
    La fenêtre est déjà visible quand tu exécute ce code? Si ce n'est pas le cas, je pense que getFrame().getBounds() va te renvoyer 0,0,0,0

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Par défaut Bonjour
    Bonjour à tous!
    En fait, la fenêtre s'affiche à l'exécution, mais elle s'affiche au bas de l'écran, dans le coin à gauche, et à partir du centre de l'écran!

  5. #5
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    ...

  6. #6
    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 : 45
    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
    Ce n'est pas la question que j'ai posée. Est-ce qu'elle est déjà visible dans ton code avant que tu la positionne, ou pas?

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Par défaut
    Là, j'avoue que je ne comprend bien la question! Pourriez-vous être un peu plus explicite? Merci d'avance!

  8. #8
    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 : 45
    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
    A quel moment tu fais appel au setVisible()? Avant ou après ce bout de code?

  9. #9
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    De toutes façons, si c'est pour positionner la fenêtre au centre de l'écran, il existe Je ne comprend pas la question, donc... Apparemment le calcul de la position de la fenêtre est mauvais parce que tu calcule la position du coin supérieur gauche et que tu le met au centre. Il faut donc retrancher la moitié de la largeur de la fenêtre à x et la moitié de sa hauteur à y.

    Je dis ça, mais faudrait que je regarde le calcul de plus près.

  10. #10
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Par défaut
    Merci bien, ta question viens de me diriger peut-être vers ma solution!
    Dans ma classe main, j'arrive à réajuster l'affichage avec le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
            FenetreView f = new FenetreView(this);
            f.getFrame().setLocation(dim.width/5 - f.getFrame().getWidth()/5
                    , dim.height/10 - f.getFrame().getHeight()/10);
            show(f);

  11. #11
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Par défaut
    Je tiens à remercier chacun de vous qui m'avez aidé à trouver une solution à mon problème! En bref, j'ai le code suivant dans ma fenêtre principale:

    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
    initComponents();
            Dimension dimension = new  Dimension(1000, 700);
            Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
            Rectangle frame = getFrame().getBounds();
            this.getFrame().setPreferredSize(dimension);
            this.getFrame().setResizable(false);
            this.getFrame().setLocation((screen.width - frame.width)/2, (screen.height - frame.height)/2);
     
    Puis, au niveau de la classe main où j'appelle la fenêtre principale j'ai ceci:
     
    Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
            FenetreView f = new FenetreView(this);
            f.getFrame().setLocation(dim.width/5 - f.getFrame().getWidth()/5
                    , dim.height/10 - f.getFrame().getHeight()/10);
            show(f);
    De cette façon, j'ai enfin réussi à positionner l'affichage de ma fenêtre de façon acceptable! Merci encore à tous! Mais toutes suggestion pour améliorer mon code serait la bienvenue!

  12. #12
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Pourquoi ne pas se contenter d'un setLocationRelativeTo(null) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            this.getFrame().setPreferredSize(dimension);
            this.getFrame().setResizable(false);
            this.getFrame().setLocationRelativeTo(null);
    Ca devrait automatiquement centrer la fenêtre par rapport à l'écran...

    a++

  13. #13
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    Mmmh ah c'est "relative to", j'aurais dû vérifier, mais bon...

Discussions similaires

  1. bouton imprimer dans une frame pour imprimer une autre frame
    Par Halima91 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 15/06/2007, 17h07
  2. Difficulté pour réaliser une requete peu complexe :/
    Par DanaX dans le forum Langage SQL
    Réponses: 9
    Dernier message: 16/05/2007, 13h55
  3. Réponses: 3
    Dernier message: 25/08/2006, 15h57
  4. [JNI] Difficultés pour utiliser une DLL
    Par etiennegaloup dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 15/08/2005, 21h29
  5. En difficulté pour faire une requete
    Par Fonzy17 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 21/03/2005, 10h56

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