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

Composants Java Discussion :

JScrollPane dans un Panel supprime les autres JPanels


Sujet :

Composants Java

  1. #1
    Membre à l'essai
    Femme Profil pro
    Bioinformatique et Biostatistiques
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Bioinformatique et Biostatistiques
    Secteur : Service public

    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Points : 20
    Points
    20
    Par défaut JScrollPane dans un Panel supprime les autres JPanels
    Bonsoir,


    Mon but est de créer une interface de type navigateur web. Elle contient un globalPanel (getContentPane) qui lui même contient 4 autres JPanel. Je voudrais mettre une ScrollPane sur le panel 3 seulement. Cependant, quand je fais ça les autres panels ne s'affichent plus !!!


    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
    // J'ai déclaré tous les autres composants en dehors du Viewer2
    
    	private JScrollPane scroll = new JScrollPane();
    	public Viewer2 (){
    		
    		largeurFenetre = 1000;
    		hauteurFenetre = 700;
    	 	this.setSize(largeurFenetre, hauteurFenetre);
    		this.setLocationRelativeTo(null);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.getContentPane().add(globalPanel);
    
    
                scroll.getViewport().add(panel_3); // scrollPane pour le grand oiseau
    		add(scroll);
    
                   // si on met cette ligne de code, les panels sont tous présents, mais la scrollpane est appliquée aux 4 panels.
                   // scroll.getViewport().add(globalPanel);
    
    
    		globalPanel.add(panel_1);
    		globalPanel.add(panel_2);
    		globalPanel.add(panel_3);
    		globalPanel.add(panel_4);
    
    		panel_3.add(fonPanel); // image du grand panel central
    		panel_1.add(perso); // image en haut
    		panel_2.add(buttonFav);
    
    
                    // ajout de tous les boutons au panel 2. Je n'ai pas tout mis
    		panel_2.add(buttonHist);
    	        panel_2.add(buttonHome);
    
                    // ajout du menuBar pareil je n'ai pas tout mis (Fichier, Affichage, ...)
    		menuBar.setBorder(null);
    		fichier.add(menuNouvFen);	
    		this.setJMenuBar(menuBar);
    
    		this.setVisible(true);
    
    }

    Je vous remercie d'avance !
    Bonne soirée !

  2. #2
    Membre actif Avatar de Vikisme
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2007
    Messages : 172
    Points : 228
    Points
    228
    Par défaut
    Bonjour,

    Je ne vois pas la déclaration du globalPanel mais il semblerait que tu ne lui es pas définit de layout (ni de contraintes lorsque tu ajoutes les 4 panel dedans)...

    -> LayoutManager

    Pour ton organisation soit tu choisi un Panel avec un BorderLayout contenant le panel 2 au nord, le panel 3 dans un JScrollPane au centre et le panel 4 au sud, un autre panel avec un BorderLayout avec le panel 1 au nord et le panel précédent au centre, soit un GridBagLayout si tu sais bien comment l'utiliser.

    Mais sans layout manager, tu as par défaut un "null layout" et c'est à toi de positionner les panneaux à l'intérieur ainsi que leurs tailles...

  3. #3
    Membre à l'essai
    Femme Profil pro
    Bioinformatique et Biostatistiques
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Bioinformatique et Biostatistiques
    Secteur : Service public

    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Bonjour,

    Merci Vikisme pour ta réponse.
    Pour mes panels (1 à 4) j'ai déjà définis les layout avec un Gridbaglayout.
    Cependant pour mon globalpanel il n'y a effectivement pas de layout, j'ai donc fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    
    //déclaration
    
    JPanel globalPanel = new JPanel;
    FlowLayout global = new FlowLayout(FlowLayout.CENTER);
    
    this.globalPanel.setLayout(global);
    Mais pas de changement, faut-il faire de même pour les panels de 1 à 4 (mettre les setLayout) ?
    Est-ce que c'est l’absence du LayoutManager qui joue sur la scrollPane, à savoir la suppression des autres panels mis à part le panel_3 ?

  4. #4
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Points : 909
    Points
    909
    Par défaut
    Bonjour.

    Alors déjà le Flowlayout ne fera pas ce que tu veux vu qu'il met le objets les uns à la suite des autre horizontalement puis à la ligne si pas assez de place.

    Soit tu utilise un Border layout comme expliqué plus haut soit un BoxLayout vertical. (voir la javadoc)
    (j'aime le BoxLayout perso mais il faut bien penser à ce que tout tes JPanels aient un defaultSize)

  5. #5
    Membre à l'essai
    Femme Profil pro
    Bioinformatique et Biostatistiques
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Bioinformatique et Biostatistiques
    Secteur : Service public

    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Tout d'abord, l'image que vous voyez est ce que j'ai déjà obtenu, donc je pense qu'il n'y a pas de soucis dans le positionnement des panels. Je les ai positionné avec GridBagLayout (bien galéré d'ailleurs ...). Je me trompe ? Peut être que c'est la configuration avec le GridBagLayout qui fait tout capoter ?

    Voici mes GridBagLayout pour positionner mes panels :
    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
     
     
    GridBagConstraints c = new GridBagConstraints();
     
    		c.weightx= 1;
    		c.fill = GridBagConstraints.BOTH;
    		c.gridwidth = GridBagConstraints.REMAINDER;
    		gridbag.setConstraints(panel_1, c);
    		globalPanel.add(panel_1);
     
    		gridbag.setConstraints(panel_2, c);
    		globalPanel.add(panel_2);
     
    		c.gridwidth = GridBagConstraints.REMAINDER; 
    		c.fill = GridBagConstraints.BOTH;
    		c.weighty = 1;
    		gridbag.setConstraints(panel_3, c);
    		globalPanel.add(panel_3);
     
    		c.gridwidth = GridBagConstraints.REMAINDER;
    		c.fill = GridBagConstraints.BOTH;
    		c.weighty = 0;
    		gridbag.setConstraints(panel_4, c);
    		globalPanel.add(panel_4);
    Petit clin d’œil : Je suis moi aussi Bioinformaticienne (étudiante ...)

  6. #6
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par deltamoins Voir le message
    Tout d'abord, l'image que vous voyez est ce que j'ai déjà obtenu, donc je pense qu'il n'y a pas de soucis dans le positionnement des panels. Je les ai positionné avec GridBagLayout (bien galéré d'ailleurs ...). Je me trompe ? Peut être que c'est la configuration avec le GridBagLayout qui fait tout capoter ?



    Petit clin d’œil : Je suis moi aussi Bioinformaticienne (étudiante ...)
    ^^ (quel diplome ?)

    Alors pour le gridBag je vais pas trop pouvoir t'aider ce layout me donne des boutons ...
    Par contre le fait de réutiliser toujours le même GridBagConstraints est bizarre non ?

    Edit: je viens de relire ton code du premier poste .... Il faut remplacer ton ajout du panel_3 par l'ajout du scrollPane
    dans ton globalPane tu met donc panel_1, panel_2, scroll et panel_4. Panel_3 est lui dans le viewport du scroll

  7. #7
    Membre à l'essai
    Femme Profil pro
    Bioinformatique et Biostatistiques
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Bioinformatique et Biostatistiques
    Secteur : Service public

    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Je suis à Paris Sud en M2 Bioinformatique et Biostats !!! Et toi tu viens de quelle formation ?
    Alors j'ai réussi !!! Un miracle lol
    En fait j'ai complètement enlevé le gridBagLayout pour le positionnement des panels mais je l'ai gardé pour le positionnement des icônes dans le panel !
    J'ai fait comme m'a dit Vikisme avec 2 BorderLayout : 1 panel_1 au nord contenant 2 autres panels qui se trouvent un au nord (fichier, affichage, ... ) et l'autre au sud (boutons et barre d'adresse). Un autre BorderLayout comprenant le panel_1 au nord, le panel_2 au centre (pour la page web) et le panel_3 au sud pour la barre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    		panel_1.add(panel_1a, BorderLayout.NORTH);
    		panel_1.add(panel_1b, BorderLayout.SOUTH);
    		globalPanel.add(panel_1, BorderLayout.NORTH);
    		globalPanel.add(panel_2, BorderLayout.CENTER);
    		globalPanel.add(panel_3, BorderLayout.SOUTH);
    Ensuite j'ai ajouté ma scrollPane comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    		scroll.getViewport().add(panel_2);
    		globalPanel.add(scroll); //globalPanel = contentPane
    Je vous remercie tous les 2 pour votre aide !!! Ça m'a vraiment beaucoup aidé à comprendre comment faire ! Par contre je crois que je ne maîtrise pas encore trop le GridBagLayout ...

    Bonne journée à vous deux !! Et encore merci !

  8. #8
    Membre éprouvé Avatar de Lady
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mars 2003
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

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

    Informations forums :
    Inscription : Mars 2003
    Messages : 678
    Points : 909
    Points
    909
    Par défaut
    Citation Envoyé par deltamoins Voir le message
    Je suis à Paris Sud en M2 Bioinformatique et Biostats !!!

    diplomée BIBS 2007!!

    Je me disais bien que ce projet de browser web en java ne m'était pas inconnus (c'est aussi pour ça que je t'ai posé la question, ça m'a mis la puce à l'oreille).... j'en ai pas de bon souvenir d'ailleurs (ont c'était grave plantée avec ma binôme)
    Tu va voir le morceau compliqué c'est de mettre le objet web dans ton panel_3.

    Pour le coup je te dirais bien de quand même aller voir les BoxLayouts ... à l'époque je le connaissais pas et je me demande si ça m'aurai pas aider ....


    tiens un lien de ce forum ou on liste déjà plus de layouts que ceux vu en cours. Je pense qu'il est intéressant de savoir quoi existe:

    http://www.developpez.net/forums/d52...rents-layouts/

  9. #9
    Membre à l'essai
    Femme Profil pro
    Bioinformatique et Biostatistiques
    Inscrit en
    Février 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Bioinformatique et Biostatistiques
    Secteur : Service public

    Informations forums :
    Inscription : Février 2011
    Messages : 22
    Points : 20
    Points
    20
    Par défaut
    Merci pour le lien !! Il est vrai que si je l'avais vu plus tôt cela m'aurait éviter quelques soucis !!!
    Comme quoi le prof n'a pas changé son programme depuis pas mal de temps hum hum ...
    J'espère que l'on va réussir à mettre cette fichu page web dans notre panel ... son code me sort par les yeux O_o
    Notre promo essaye de (re)créer l'annuaire des anciens pour savoir ce que vous êtes devenus !! As tu reçu cette annonce ?
    Merci encore pour l'aide

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

Discussions similaires

  1. [Lazarus] Afficher une form dans le panel d'une autre form
    Par jojo86 dans le forum Lazarus
    Réponses: 2
    Dernier message: 22/05/2012, 00h02
  2. [XL-2007] OUTLINE : Ne développer qu'un sous niveau dans un groupe pas les autres
    Par ESVBA dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/10/2010, 17h22
  3. Réponses: 1
    Dernier message: 05/10/2009, 03h50
  4. [E-03] Tableau dans lequel on supprime les doublons mais pas toujours
    Par edonist dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/10/2008, 21h38
  5. Ne laisser que 2 nombres aprés la virgule ou le point et supprimer les autres
    Par mystro7200 dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 18/07/2008, 18h16

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