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

Interfaces Graphiques en Java Discussion :

JPannel et JTabbedPane superposés en setLayout(null);


Sujet :

Interfaces Graphiques en Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Points : 13
    Points
    13
    Par défaut JPannel et JTabbedPane superposés en setLayout(null);
    Bonjour,

    Débutant sur les GUI, je m'obstine néanmoins à vouloir une fenêtre de base telle que celle ci:



    J'ai donc commencé par créer deux panels:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    JPanel           panelBouton; //je souhaiterais que ce panel soit toujours au dessus du panelOnglets. Néanmoins, pour le test, je ne les ai même pas encore superposés O_o
    JTabbedPane  panelOnglet;
    De là j'insère les différents onglets aux panelOnglets.

    Là, la chose se corse.. Je souhaiterais définir leurs emplacements avec des absolut layouts ( pane.setLayout(null); )
    Bien entendu, je n'arriva pas du tout au resultat que j'aimerais sur l'image..
    Auriez-vous une idée de comment procéder? J'ai comme l'impression que l'Internet me dit de ne pas utiliser le setLayout(null) avec des JTabbedPane...
    Je vais quand même pas bricoler à coup de JPanel quand même? .... enfin.. j'espère


    Merci à vous

    Eldorico
    EDIT: PS: L'image est accessible en cliquant sur ouvrir l'image dans un nouvel onglet ^^

  2. #2
    Membre averti
    Avatar de omar344
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2007
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2007
    Messages : 287
    Points : 301
    Points
    301
    Par défaut
    veut dire que tu dois gérer la disposition de tes éléments avec la méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    element.setBounds(int x, int y, int largeur, int hauteur)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Oui oui, mais j'arrive à une erreur du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Exception in thread "AWT-EventQueue-2" java.lang.ArrayIndexOutOfBoundsException: 0
    et tout une panoplie d'erreurs liées à ça

    Voici ma classe test


    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
    public class Fenetre extends JFrame{
    //----------------------------------------
    //---------------Attributs----------------
    //----------------------------------------
     
       private JTabbedPane        panelOnglet;   //J'ai même essayé de les instancier ici O_o
       private JPanel             panelBouton;
       private JPanel             onglet1;
       private JPanel             onglet2;
     
     
     
    //----------------------------------------
    //-------------Constructeur--------------
    //----------------------------------------   
       public Fenetre(){
     
    	  this.setSize(500,500);
    	  this.setVisible(true); 
    	  this.setLayout(null);
     
          //ceci est un test qui s'est avéré non concluant :-(  -------------{
          this.setLayout(null);
         //---------------------------------------------------------------------------------------}
     
          //------------>PANNELS ONGLETS<------------
          //initialisation Pannels Onglets 
          panelOnglet  = new JTabbedPane();
          onglet1        = new JPanel();
          onglet2        = new JPanel();
     
          //ajout des Onglets dans pannelOnglet
          panelOnglet.addTab("Panel1", null, onglet1);
          panelOnglet.addTab("Panel2", null, onglet2);
     
          //ceci est un test qui s'est avéré non concluant :-(  -------------{
          onglet1.setLayout(null);
          onglet2.setLayout(null);
         //---------------------------------------------------------------------------------------}
     
          //position Pannel Onglets (J'ai même essayé de positionner après l'avoir ajouté dans contentPane :-/
          panelOnglet.setLayout(null);
          panelOnglet.setBounds(70, 70, 150, 150);
          panelOnglet.setBackground(Color.BLUE);
     
          //------------>PANNEL BOUTON<------------       
          //initialisation Pannels Boutons
          panelBouton = new JPanel();
     
          //position Pannel Bouton (J'ai même essayé de positionner après l'avoir ajouté dans contentPane :-/
          panelBouton.setLayout(null);
          panelBouton.setBounds(0,0,69,69);  //J'ai aussi essayé avec (1,1,68,68)
          panelBouton.setBackground(Color.BLACK);
     
     
          //------------>AJOUT DANS CONTENT PANE<------------
     
          this.getContentPane().add(panelOnglet);
          this.getContentPane().add(panelBouton);
     
     
       }
    }
    Qu'est-ce qui joue pas? une idée?



    Amicalement,

    Eldorico

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Retire cette ligne : "panelOnglet.setLayout(null);"
    Le JTabbedPane possède son propre layout pour afficher les onglets. Il faut le laisser faire !
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    oh oui merci c'est bien ça!


    Et maintenant, est-il possible de les superposer? (comme sur l'image?)
    (J'essaierai ensuite de déplacer les onglets, mais en gardant leur JPane sur la totalité de la fenêtre)

    (Faut l'ouvir dans un nouvel onglet ^^)

    EDIT: je crois avoir trouvé la réponse sur une autre discussion. dsl. Je test en ce momment puis mettrait en résolu ^^

    Bien à vous,
    Eldorico

  6. #6
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Superposer ?
    Je ne comprends pas ce que tu souhaite obtenir. Le JPanel des boutons cacherait une partie du JTabbedPane ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    ça y'est

    J'ai réussi

    Merci à vous!

    C'est JLayeredPane qui s'occupe des superpositions. J'ai mis mes notes dans le code ci -jamais.

    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
    public class Fenetre extends JFrame{
    //----------------------------------------
    //---------------Attributs----------------
    //----------------------------------------
     
       private JLayeredPane couches = new JLayeredPane(); //C'est lui qui va gérer la superposition
     
       private JTabbedPane        panelOnglet;   
       private JPanel             panelBouton;
       private JPanel             onglet1;
       private JPanel             onglet2;
     
     
     
    //----------------------------------------
    //-------------Constructeur--------------
    //----------------------------------------   
       public Fenetre(){
     
    	  this.setSize(500,500);
    	  this.setVisible(true); 
    	  this.setLayout(null);
     
     
          //------------>PANNELS ONGLETS<------------
          //initialisation Pannels Onglets 
          panelOnglet  = new JTabbedPane();
          onglet1        = new JPanel();
          onglet2        = new JPanel();
     
          //ajout des Onglets dans pannelOnglet
          panelOnglet.addTab("Panel1", null, onglet1);
          panelOnglet.addTab("Panel2", null, onglet2);
     
     
     
          //position Pannel Onglets 
          panelOnglet.setBounds(70, 70, 150, 150);
          panelOnglet.setBackground(Color.BLUE);
     
          //------------>PANNEL BOUTON<------------       
          //initialisation Pannels Boutons
          panelBouton = new JPanel();
     
          //position Pannel Bouton 
          panelBouton.setBounds(0,0,69,69);  
          panelBouton.setBackground(Color.BLACK);
     
     
          //------------>AJOUT DANS CONTENT PANE<------------
          couches.setBounds(0, 0, this.getWidth(),this.getHeight()); //A faire sinon ça marche pas
     
          //Mise des couches dans contentPane
          this.getContentPane().add(couches);
     
          //Mise des pannels dans couche
          couches.add(panelOnglet, new Integer(-1));
          couches.add(panelBouton, new Integer(0));
     
     
       }
    }

  8. #8
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations forums :
    Inscription : Août 2013
    Messages : 18
    Points : 13
    Points
    13
    Par défaut
    Oui, je souhaitais mettre le JTabbedPane sur toute la fenêtre, et ajouter un JPane bouton par dessus le JTabbedPane en haut à gauche ^^

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

Discussions similaires

  1. JPanel setLayout(null) affichage
    Par Invité dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 02/06/2011, 18h20
  2. jpanel setlayout (null)
    Par javaNavCha dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 09/12/2010, 14h06
  3. Réponses: 4
    Dernier message: 18/01/2010, 12h38
  4. affichage avec setLayout(null)
    Par surfing903 dans le forum Graphisme
    Réponses: 3
    Dernier message: 31/08/2007, 06h35
  5. "ALTERER" une col. NULL en NOT NULL - Int
    Par Gandalf24 dans le forum SQL
    Réponses: 2
    Dernier message: 28/12/2002, 00h07

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