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 :

Specifier hauteur JPanel dans JScrollPane


Sujet :

Agents de placement/Fenêtres Java

  1. #1
    Membre éclairé Avatar de snay13
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Par défaut Specifier hauteur JPanel dans JScrollPane
    Bonjour

    Je vous expose mon problème

    J'ai un jpanel integré dans un JScrollPane où j'affiche des images
    J'ai besoin de spécifier une largeur fixe avec une hauteur variable selon le nombre d'images affichées

    Comment faire cela ?

    Pour l'instant je suis obligé d'afficher une hauteur fixe pour que cela fonctionne

    Voici le code :

    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
     
    JPanel PAN_Colonne1 = new JPanel();
            PAN_Colonne1.setPreferredSize(new Dimension(
                   (int) ((Informations.screenWidth - 30) * 0.65),
                    1800));
            PAN_Colonne1.setBorder(BorderFactory.createLineBorder(Color.black, 5));
            PAN_Colonne1.setBackground(new Color(239, 228, 176));
            PAN_Colonne1.setLayout(new FlowLayout(FlowLayout.LEFT, 15, 15));
     
            JScrollPane scroll = new JScrollPane(PAN_Colonne1,
                    ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED,
                    ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
            scroll.setPreferredSize(new Dimension(
                    (int) ((Informations.screenWidth - 30) * 0.65),
                    (int) ((Informations.screenHeight - 30) * 0.8)));
            container.add(scroll);
     
            //Recuperation de la liste des fichiers
            String[] liste = ManagerPath.getListFichier();
            //Boucle recuperation + vignette
            for (int i = 0; i < liste.length; i++)
            {
                //Path image
                String pathImage = ManagerPath.getNomDossier(liste[i]) + "/1.png";
                //Date et Heure
                String formatDate = "dd/MM/yyyy"; SimpleDateFormat formaterDate = new SimpleDateFormat(formatDate);
                String formatHeure = "HH:mm"; SimpleDateFormat formaterHeure = new SimpleDateFormat(formatHeure);
                String date = formaterDate.format(new Date(new File(liste[i]).lastModified()));
                String heure = formaterHeure.format(new Date(new File(liste[i]).lastModified()));
                //Poids Fichier
                String poidsFichier =  "" + ((float) (new File(liste[i]).length()/1000))/1000 + "Mo";
                //Nom Fichier
                String nomFichier = new File(liste[i]).getName();
     
                ThreadAffichageImage affichageImage = new ThreadAffichageImage(PAN_Colonne1, scroll, pathImage, date, heure,
                        poidsFichier, nomFichier);
                affichageImage.execute();

  2. #2
    Membre Expert Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Par défaut
    J'ai un jpanel integré dans un JScrollPane où j'affiche des images
    J'ai besoin de spécifier une largeur fixe avec une hauteur variable selon le nombre d'images affichées
    pourquoi mettre un JSrollPane si tu veux faire varier la hauteur du panel? et inversement?

    Si les hauteurs d'images sont fixe, hauteurPanel = hauteurImage * nbImage
    Mais je suppose que tu y as déjà pensé

  3. #3
    Membre éclairé Avatar de snay13
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Par défaut
    Merci de me répondre

    Effectivement j'y est déjà pensé mais j'aimerais ne pas avoir à le calculer à chaque fois car des images s'ajoutent et se suppriment au fur et à mesure.
    De plus lorsqu'une image arrive j'effectue un traitement avant de l'afficher

    Est ce qu'il n'existerait pas un moyen de créér un jpanel qui s'ajuste au contenu comme un setpreferredSize(new dimension(fixe, variable)) ?

  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 te faut coder la méthode getPreferredSize façon à ce qu'elle retournehauteurImage * nbImage (ou que cette valeur soit calculée à chaque ajout d'image et que le getPreferredSize ne se contente que de la renvoyer)
    Puis à chaque ajout d'image il te faut appeler la méthode revalidate de ton JPanel.

  5. #5
    Membre éclairé Avatar de snay13
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Par défaut
    Ah oui j'y avais pas pensé
    Si j'ai bien compris je crée une variable locale dans ma classe qui calcule la hauteur voulue du jpanel selon le nombre d'image et que j'affecte à la hauteur de mon setPreferredSize de mon jpanel
    quand une image s'ajoute je fais un revalidate et le preferredsize se recalcule en tenent compte de l'image qui s'est ajouté.

    Je teste et je reviens avec les resultats

    Si ca fonctionne, tu m'enlève bien des galères à venir

    Merci

  6. #6
    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
    Et attention à bien appeler le revalidate du JPanel.

  7. #7
    Membre éclairé Avatar de snay13
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2009
    Messages : 236
    Par défaut
    Me voilà de retour

    Bon ca n'a pas marchè mais j'ai pu résoudre mon problème en créant une méthode statique qui récupère automatiquement le nombre de page et calcule la hauteur du panneau :

    Voila ce que j'ai testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
            PAN_Colonne1 = new JPanel();
            PAN_Colonne1.setPreferredSize(new Dimension(
                   (int) ((Informations.screenWidth - 15) * 0.65),
                    ManagerPath.getHauteur()));
            PAN_Colonne1.setBackground(new Color(98, 181, 213));
            PAN_Colonne1.setLayout(new FlowLayout(FlowLayout.LEFT, 15, 15));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            panel.add(vignette);
            panel.setPreferredSize(new Dimension(panel.getPreferredSize().width, panel.getPreferredSize().height));
            panel.revalidate();
            scroll.revalidate();
    du coup je mets ma methode statique et ca fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
            panel.add(vignette);
            panel.setPreferredSize(new Dimension(panel.getPreferredSize().width, ManagerPath.getHauteur()));
            panel.revalidate();
            scroll.revalidate();
    Merci

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

Discussions similaires

  1. Taille JPanel dans JScrollPane
    Par Ceubex dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 27/09/2012, 20h45
  2. [Swing] JPanel dans JScrollPane ça ne marche pas !
    Par Invité dans le forum Agents de placement/Fenêtres
    Réponses: 5
    Dernier message: 23/11/2010, 01h16
  3. probleme JPanel dans JScrollPane
    Par hbar01 dans le forum Agents de placement/Fenêtres
    Réponses: 6
    Dernier message: 30/05/2008, 20h37
  4. Probleme [SWING]: JPanel dans JscrollPane
    Par malandro dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 24/05/2006, 22h02
  5. [Débutant] JPanel dans JScrollPane
    Par Nicolas_75 dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 06/04/2005, 10h39

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