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

Agents de placement/Fenêtres Java Discussion :

[Swing] Positionnement de JFrame


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Par défaut [Swing] Positionnement de JFrame
    Hello,

    Actuellement en stage de BTS IG option DA, j'ai été amené à développer un petit soft, à l'interface graphique minimaliste (les fonctionnalités de l'application ne nécessitent pas une interface très fouillée). L'appli est fonctionnelle désormais, il n'y a pas de souci de ce point de vue là. Le tuto' disponible sur developpez m'a d'ailleurs été particulièrement utile

    Bref, il s'avère que je n'arrive pas (plus ?) à repositionner ma fenêtre au centre de ma zone d'affichage.

    J'utilisais auparavant le fameux "setLocationRelativeTo(null)", sans succès désormais. (Enfin si, de façon empirique, on dira qu'avec cette ligne, ma fenêtre s'affiche au centre de l'écran l'espace de quelques instants, puis se repositionne à sa position par défaut, soit en haut à gauche).

    Un petit bout de code, pour que vous vous fassiez une idée :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
        
        public Iw2Gui()
        {
            super();
            
            build();
        }
        
        public void build(){
            
            
            Iw2properties fichierprop = new Iw2properties();
            fichierprop.load("/iw2.properties");
            setTitle("IW2 - Transform");
            setLocationRelativeTo(null);
    
            String prop=new String(Iw2properties.getProperty("driver.count"));
            Vector elements = new Vector();
            int ind = Integer.parseInt(prop); 
            
            for (int i=0; i<ind; i++){
                elements.add(Iw2properties.getProperty("datasource."+(i+1)));
                
            }
            liste1 = new JComboBox(elements);
            
            
            setSize(new Dimension(290,160));           
              setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
            setResizable(false);                    
            
            FlowLayout flowLayout = new FlowLayout();
            flowLayout.setAlignment(java.awt.FlowLayout.LEFT);
            
            JPanel pan1=new JPanel();
            JPanel pan=new JPanel();             
            JPanel pan2=new JPanel();
            JPanel pan3=new JPanel();
            
               pan.setLayout(new BorderLayout());                           
            pan1.setLayout(flowLayout);
            pan2.setLayout(flowLayout);
            pan3.setLayout(flowLayout);
            
            JLabel  lab=new JLabel("Fichier :   ");  
            pan1.add(lab);
            pan1.add(dirfile);    
            pan1.add(parc);
            JLabel lab1= new JLabel("Requête :");
            JLabel lab2 = new JLabel("Base de données :");
            importb.setBackground(Color.orange);
            exportb.setBackground(Color.orange);
            edit.setBackground(Color.white);
            
            pan2.add(lab1);
            pan2.add(dirreq);
            
            pan1.add(parc);
            pan3.setLayout(new FlowLayout());
            pan3.add(importb);
            pan3.add(exportb);
            pan2.add(edit);
            pan2.add(lab2);
            pan2.add(liste1);
            
            pan.add(pan1, BorderLayout.NORTH);
            pan.add(pan2, BorderLayout.CENTER);
            pan.add(pan3, BorderLayout.SOUTH);
         
    
            parc.addActionListener(this);
            exportb.addActionListener(this);
            importb.addActionListener(this);
            edit.addActionListener(this);
            
            setContentPane(pan); 
            setVisible(true);           
       
    
        }
    A vrai dire, je ne vois pas.

    Dans l'attente d'une réponse, je vous salue

    Merci d'avance.

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 252
    Par défaut
    la méthode à utiliser est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    setLocationRelativeTo(null);
    et non xxxPositionXxx.

    Qui plus est, l'appel à setLocationRelativeTo(...) doit être fait après l'attribution de la taille (donc après le setSize()).

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7
    Par défaut
    Au temps pour moi, le "Position", c'est une erreur, je l'ai ajouté après avoir copié/collé mon code, l'ayant supprimé au préalable.

    J'ai par ailleurs suivi le second conseil, le problème ne change pas.

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Il ne faut appeler cette méthode qu'une fois al taille de la JFrame fixée (soit au moyen d'un appel à pack soit un appel à la méthode setSize).
    Donc grosso modo fait ton appel à setLocationRelativeTo(null) juste avant l'appel au setVisible de ta JFrame

  5. #5
    Membre Expert
    Avatar de yotta
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Septembre 2006
    Messages
    1 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 099
    Par défaut OK
    Rien à dire, sinok a donner la solution. C'est logique, pour que la fenêtre soit positionnée au milieu de l'écran, il n'y a pas de miracle, il faut calculer la position de son coin supérieur gauche. Mais pour calculer ce dernier, il faut impérativement connaître la taille de la fenêtre, ou bien qu'elle soit au moins définie !
    Une technologie n'est récalcitrante que par ce qu'on ne la connait et/ou comprend pas, rarement par ce qu'elle est mal faite.
    Et pour cesser de subir une technologie récalcitrante, n'hésitez surtout pas à visiter les Guides/Faq du site !

    Voici une liste non exhaustive des tutoriels qui me sont le plus familiers :
    Tout sur Java, du débutant au pro : https://java.developpez.com/cours/
    Tout sur les réseaux : https://reseau.developpez.com/cours/
    Tout sur les systèmes d'exploitation : https://systeme.developpez.com/cours/
    Tout sur le matériel : https://hardware.developpez.com/cours/

Discussions similaires

  1. [Java/Java'scool][Swing] Ouvrir une JFrame avec un bouton
    Par El Kun dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 13/05/2014, 10h16
  2. [Swing] Positionner une appli sur un 2nd écran
    Par TekP@f dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 04/01/2010, 12h02
  3. [SWING]obtention de JFrame à partir d'une autre
    Par 3asfoura dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 17/08/2007, 12h15
  4. [Swing] Mise à jour JFrame.
    Par marchand_de_sable dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 26/05/2006, 14h20
  5. [Swing]Image en fond de JFrame+ objets par dessus
    Par matt92700 dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 16/01/2006, 16h12

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