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 :

Incompréhension sur la taille des fenêtres et des composants


Sujet :

AWT/Swing Java

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2016
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Incompréhension sur la taille des fenêtres et des composants
    Bonjour,

    je ne comprends pas comment fonctionne les dimensions dans les fenêtres, je me retrouve avec des comportements totalement incohérents je m'explique:

    Si je crée une fenêtre de dimension 400 de largeur sur 500 de hauteur, et que j'y intègre 2 JPanel:
    un en haut, de dimension 400 de largeur sur 60 de hauteur, (situé à x=0 et y=0)
    un en dessous qui prend le reste de la fenêtre, soit 400 de largeur et (500-60=)440 de hauteur (situé à x=0 et y=60).

    Cela donne le code suivant:

    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
    JFrame fenetre = new JFrame();
    		fenetre.setLocation(500,150);
    		fenetre.setTitle("Fenetre cool");
    		fenetre.setSize(400,500);
    		fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		fenetre.setVisible(true);
     
                    //panel du haut
    		JPanel p1 = new JPanel();
    		p1.setBackground(Color.blue);
    		p1.setBounds(0, 0, fenetre.getWidth(), 60);
     
                    //panel du bas
    		JPanel p2 = new JPanel();
    		p2.setBackground(Color.red);
    		p2.setBounds(0, p1.getHeight(), fenetre.getWidth(), 400);
     
    		fenetre.setLayout(null);
    		fenetre.getContentPane().add(p1);
    		fenetre.getContentPane().add(p2);

    Le problème, c'est que le panel du bas (p2) dépasse du conteneur de la fenêtre et pour rentrer correctement, c'est à dire que son bord inférieur coïncide avec le bord inférieur de la fenêtre, sa dimension doit être de 400 !
    Or, en tout logique, avec une fenêtre de 400x500, le panel du haut faisant 60 de haut, celui du bas, pour rentrer correctement devrait faire 500-60 = 440, or pour fit correctement il doit faire 400, cela n'a pas de sens ! Quelqu'un aurait une explication ?

    PS: j'ai essayé en créant un JPanel contenu, Jpanel intermédiaire que je définis comme setContentPane() de la fenetre, avec un layout null et dans lequel j'ajoute mes 2 panels p1 et p2, mais j'obtient le même résultat.

    Merci beaucoup !

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Premièrement, tu n'es pas censé utiliser un layout null. Utilise un layout, c'est comme ça qu'on est censé utiliser swing.

    Ensuite, la dimension d'une fenêtre inclue les décorations (titre, menu, bordure)
    Enfin, l'OS peut ajuster les valeurs.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Octobre 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2016
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup Tchize_ !
    Donc la taille d'une JFrame n'est pas la même que celle de son contenant et visiblement la taille peut varier d'un OS ou d'une version d'OS à une autre.
    Je vais creuser les layout, ce sera bien plus fiable et portable visiblement..

    Merci encore

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

Discussions similaires

  1. Gestion des tailles de fenêtres avec des MDI form
    Par scanloob dans le forum VB.NET
    Réponses: 0
    Dernier message: 19/07/2014, 15h25
  2. Réponses: 15
    Dernier message: 26/11/2010, 21h38
  3. Réponses: 10
    Dernier message: 15/04/2008, 15h26
  4. Réponses: 4
    Dernier message: 14/05/2007, 08h53

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