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 :

[débutante]Comportement des gestionnaires de mise en page, besoins de renseignements


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 55
    Points : 41
    Points
    41
    Par défaut [débutante]Comportement des gestionnaires de mise en page, besoins de renseignements
    Bonjour,

    Je suis en train de m'initier au développement d'application graphique. Pour cela, je travaille avec les bibliothèques awt et Swing

    Je suis en train de tester les différents gestionnaires de mise en page et différents composants graphiques. Actuellement, j'essaie de réaliser une petite fenetre avec 3 onglets à l'interieur (JTabbedPane).

    Je sais que les différents gestionnaires de mises en page permettent de gerer l'emplacement des composants que j'insère dans des conteneurs (Jpanel).
    Entre autre, le FlowLayout place les composant de gauche à droite, en commençant par le haut, et le BorderLayout comprend 5 zones : nord, sud, centre, ouest et est.

    Ce que j'ai du mal à comprendre, c'est l'affichage différent de mon JTabbedPane, selon que je le place dans un FlowLayout ou dans un BorderLayout.
    Dans le premier cas, il m'affiche juste les titres des onglets :

    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
     
    public class InterfaceDemo extends JFrame{
     
        private JPanel mainContainer = null;
        private FlowLayout mainLayout = null;
        private JTabbedPane tabOnglets = new JTabbedPane();
        private JPanel onglet1 = new JPanel();
        private JPanel onglet2 = new JPanel();
        private JPanel onglet3 = new JPanel();
     
     
        public InterfaceDemo(){
            super("Gene2Pep : Démonstration");
            this.setSize(600,150);
            this.setLocationRelativeTo(null);
            this.setResizable(false);
            this.setContentPane(getContainer());
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
     
        private JPanel getContainer(){
            mainContainer = new JPanel();
            mainLayout = new FlowLayout();
            mainLayout.setAlignment(FlowLayout.LEFT);
            mainContainer.setLayout(mainLayout);
            tabOnglets.addTab("Selection", onglet1);
            tabOnglets.addTab("Génération", onglet2);
            tabOnglets.addTab("Résultats", onglet3);
            mainContainer.add(tabOnglets);
     
            return mainContainer;
        }
    ...
    Dans le second cas, il m'affiche les titres des onglets et les cadres des onglets en dessous

    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
     
    public class InterfaceDemo extends JFrame{
     
        private JPanel mainContainer = null;
        private BorderLayout mainLayout = null;
        private JTabbedPane tabOnglets = new JTabbedPane();
        private JPanel onglet1 = new JPanel();
        private JPanel onglet2 = new JPanel();
        private JPanel onglet3 = new JPanel();
     
     
        public InterfaceDemo(){
            super("Gene2Pep : Démonstration");
            this.setSize(600,150);
            this.setLocationRelativeTo(null);
            this.setResizable(false);
            this.setContentPane(getContainer());
            this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
     
        private JPanel getContainer(){
            mainContainer = new JPanel();
            mainLayout = new BorderLayout();
            mainContainer.setLayout(mainLayout);
     
            tabOnglets.addTab("Selection", onglet1);
            tabOnglets.addTab("Génération", onglet2);
            tabOnglets.addTab("Résultats", onglet3);
            mainContainer.add(tabOnglets);
     
            return mainContainer;
        }
    Donc voila, si vous pouviez m'éclairer sur mon ignorance, ça serait gentil ^^
    Pourquoi cet affichage différent selon le Layout manager utilisé ?

  2. #2
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Les LayoutManager sont justement là pour gérer le positionnement des composants, donc c'est normal que la mise en page varie selon celui que tu choisis...


    Le FlowLayout se "contente" de mettre les composant les uns à la suite des autres selon leurs taille. Comme tu ne sembles pas avoir de composant à l'intérieur de ton JTabbedPane il prend le minimum de place...


    Le BorderLayout défini quand à lui 5 zone (Nord, Sud, Est, Ouest, et le centre par défaut qui prend toute la place). Donc ton JTabbedPane occupe toute la place du Panel...


    Pour plus de détail, jettes un coup d'oeil à la section Fenêtres et positionnement des composants de la FAQ GUI Java

    a++

  3. #3
    Membre du Club
    Inscrit en
    Juin 2003
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 55
    Points : 41
    Points
    41
    Par défaut
    Merci pour ta réponse

    Donc si je comprends bien, si mes onglets prennent toutes la place dans le borderLayout c'est parce que c'est un comportement par défaut de ce layout manager.
    Par contre, le FlowLayout, par défaut, fait prendre la place minimum à un composant.

    Ok, j'aime bien comprendre le fonctionnement des objets que j'utilise et non pas simplement les utiliser sans savoir pourquoi

    merci encore et surement à bientot pour de nouveaux petits problèmes d'incompréhension

    PS : merci pour le lien de la FAQ, je l'ai déja lu hier ^^

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 10/09/2014, 17h54
  2. [Dojo] Version 1.5 compréhension des notions de mise en page
    Par arsene555 dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 08/03/2011, 10h53
  3. [Visual Web] [SJSC] Mise en page des composants relative
    Par Original Prankster dans le forum NetBeans
    Réponses: 2
    Dernier message: 29/06/2006, 10h07
  4. [Débutant] mise en page
    Par nounetmasque dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 02/05/2005, 19h41

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