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 :

[JPanel] taille dans un JSCrollPane


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Par défaut [JPanel] taille dans un JSCrollPane
    Bonjour à tous !

    je tire mon chapeau a celui ou celle qui sera capable de résoudre ce petit problème que j'ai depuis ce matin.

    J'ai crée un JScrollPane dans lequel j'aimerais aficher une liste de JPanels qui contienne eux meme des composants.

    Pour l'instant je me limite à un composant. Mon probleme est que le panel prends en dimension l'intégralité du JScrollPane alors que j'aimerais qu'il prenne les dimensions que je lui ai passées en PreferedSize.

    Mon 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
     
    public class PnlBead extends javax.swing.JPanel {
     
        private javax.swing.JButton btClose;
        private javax.swing.JLabel lblInt;
        private javax.swing.JLabel lblName;
        private javax.swing.JLabel lblPop;
     
    public PnlBead(Bille xbille){
            super();
            setLayout(new BorderLayout());
            initComponents();
            btClose.setIcon(new ImageIcon("./ico/cancel.png"));
            blName.setText("<html><font color=blue>" + xbead.getName() + "</font></html>");
             lblPop.setText("Population: " + xbead.getPopulation());
             lblInt.setText("Intensity: " + xbead.getIntensity());
    les dimensions des composants et du panel sont fixés via NetBeans
    voici le code generé automatiquement :
    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
     
    private void initComponents() {
     
            btClose = new javax.swing.JButton();
            lblName = new javax.swing.JLabel();
            lblPop = new javax.swing.JLabel();
            lblInt = new javax.swing.JLabel();
     
            setBorder(javax.swing.BorderFactory.createEtchedBorder());
            setMaximumSize(new java.awt.Dimension(667, 54));
            setMinimumSize(new java.awt.Dimension(667, 54));
            setPreferredSize(new java.awt.Dimension(667, 54));
     
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
            this.setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addComponent(btClose)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(lblName, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                    .addComponent(lblPop, javax.swing.GroupLayout.PREFERRED_SIZE, 85, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(14, 14, 14)
                    .addComponent(lblInt, javax.swing.GroupLayout.PREFERRED_SIZE, 97, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(301, Short.MAX_VALUE))
            );
     
            layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {lblInt, lblName, lblPop});
     
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addContainerGap()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(lblPop, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(lblInt, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(lblName, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 28, Short.MAX_VALUE)
                        .addComponent(btClose, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 28, Short.MAX_VALUE))
                    .addContainerGap())
            );
     
            layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {lblInt, lblName, lblPop});
     
        }

    et lorsque je construit un composant pour l ajouter au JScrollPane:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    tmpPnl.setPreferredSize(new Dimension((int)scrPneAnalytes.getSize().getWidth()-10,(int)54));
    scrPneAnalytes.setViewportView(tmpPnl);
    Ainsi si quelqu'un a un tuyau pour m'aider à fixer la taille du JPanel je lui en serrais tres reconnaissant ! Merci!

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


    C'est normal : lorsque tu mets un composant dans un JScrollPane il prend toute la taille disponible, et plus si besoin (ce qui provoquera l'apparition des scrollbars).



    Mais j'ai du mal à comprendre l'intérêt de cela : pourquoi mettre un composant dans un JScrollPane si c'est pour limiter sa taille ???

    a++

  3. #3
    Membre Expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Par défaut
    c'est une tres bonne question ! lol !

    je vais essayer de mettre ces JPanel dans un autre JPanel et voir si ça peut marcher.

    je pensais que seul le JScrollPane permettait d'afficher les "ascenceurs", et vu que la liste des composants que je dois mettre dedans est longue ...

    j'essaies avec le JPanel et je vous tiens au courant !

    <edit : j ai essayé avec le JPanel mais les composants dedans je ne les vois plus>

  4. #4
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Tu veux mettre plusieurs composants dans le JScrollPane c'est ca ?

    Dans ce cas oui il faut passer par un JPanel qui contiendra tous les composants, et mettre seulement ce JPanel dans le JScrollPane.

    a++

  5. #5
    Membre Expert
    Avatar de vpourchet
    Homme Profil pro
    Integrateur Systemes & Virtualisation
    Inscrit en
    Avril 2008
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Integrateur Systemes & Virtualisation
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 1 159
    Par défaut
    comme dirait mon grand père:

    c'est tordu mais bigrement intelligent
    merci pour ton idée de génie !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 14/10/2010, 09h00
  2. JPanel à taille variable dans un JScrollPane
    Par Sake_reflex dans le forum Agents de placement/Fenêtres
    Réponses: 9
    Dernier message: 04/11/2009, 20h04
  3. Réponses: 4
    Dernier message: 26/08/2009, 05h54
  4. pb repaint sur JPanel contenu dans un JScrollPane
    Par pcouas dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 12/03/2009, 12h27
  5. Rafraichir un JPanel qui est dans un JScrollPane
    Par anitshka dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 06/12/2004, 23h17

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