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 :

jList qui prend la taille qu'elle veut


Sujet :

Composants Java

  1. #1
    Membre habitué Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Points : 173
    Points
    173
    Par défaut jList qui prend la taille qu'elle veut
    Bonjour,
    je suis ennuyée avec deux jList qui font un peu ce qu'elles veulent.
    J'ai en fait 2 jlist étirables en X et en Y, séparées par une bande de la largeur fixe.
    Jusque là tout va bien sauf qu'en fonction du contenu des listes, leur largeur varie du coup mon écran ressemble à un ressort

    La seule chose que je souhaite, c'est que mes deux listes aient la meme largeur, alors voilà un bout de mon code, si quelqu'un voit une astuce, on ne sait 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
     
    //création éléments
    jListMCAE = new JList(lstMCAE);
    jListMCAD = new JList(lstMCAD);
    jScrollMCAE = new JScrollPane();
    jScrollMCAD = new JScrollPane();
    jScrollMCAE.getViewport().add(jListMCAE);
    jScrollMCAD.getViewport().add(jListMCAD);
    jBAddAboMsg = new JButton();
    jBSuppAbo = new JButton();
    //positionnement
        jPanelMCG.add(jLabelMCAD, BorderLayout.NORTH);
        jPanelMCG.add(jScrollMCAD, BorderLayout.CENTER);
        jPanelMCD.add(jLabelMCAE, BorderLayout.NORTH);
        jPanelMCD.add(jScrollMCAE, BorderLayout.CENTER);
        jPanelMCC.setPreferredSize(new Dimension(120, 12));
        jPanelMCC.setMinimumSize(new Dimension(120, 12));
        jPanelMCC.setLayout(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridx = GridBagConstraints.RELATIVE;
        gbc.gridx = 0;
        jPanelMCC.add(jBAddAboMsg, gbc);
        jPanelMCC.add(new JLabel("\n"), gbc);
        jPanelMCC.add(new JLabel("\n"), gbc);
        jPanelMCC.add(jBSuppAbo, gbc);
        gbc = new GridBagConstraints();
        gbc.gridx = GridBagConstraints.RELATIVE; //incremente la colonne tout seul
        gbc.gridy = GridBagConstraints.REMAINDER; //tjs sur la meme ligne
        gbc.weighty = 1.0; //100% du y
        gbc.weightx = 0.5; // 50% du x
        gbc.fill = GridBagConstraints.BOTH; //etirable en x et en y
        jPanelMCCentre.add(jPanelMCG, gbc);
        gbc.weightx = 0.0; //taille fixe
        gbc.fill = GridBagConstraints.VERTICAL; //etirable en y
        jPanelMCCentre.add(jPanelMCC, gbc);
        gbc.weightx = 0.5;
        gbc.fill = GridBagConstraints.BOTH;
        jPanelMCCentre.add(jPanelMCD, gbc);
    Merci

  2. #2
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    as-tu essayé ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        jListMCAE.setFixedCellWidth(100);
        jListMCAD.setFixedCellWidth(100);
    ?

  3. #3
    Membre habitué Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Points : 173
    Points
    173
    Par défaut
    Effectivement je n'avais pas essayé.
    Ca fonctionne seulement maintenant, je me retrouve avec une liste plus grande que l'autre
    vu que j'ajoute la 1ere liste en lui disant de prendre 50% de la largeur, puis j'ajoute le panneau fixe et ensuite la 2eme liste. Du coup, la seconde liste et le panneau fixe partage les 50% restant....
    Bon je vais me pencher sur le problème, merci pour ton aide

  4. #4
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    en fait, contrairement à la table, une JList ne possède pas de méthode :

    setPreferredScrollableViewportSize(Dimension)

    Je te conseille de regarder le code de la classe JList pour la méthode getPreferredScrollableViewportSize() ca te permettra de comprendre un peu mieux comment la taille de ton scroll est décidée.

  5. #5
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    combine avec ceci peut-être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
        jListMCAE.setVisibleRowCount(5);
        jListMCAD.setVisibleRowCount(5);
     
        jListMCAE.setFixedCellWidth(100);
        jListMCAD.setFixedCellWidth(100);
     
        jListMCAE.setFixedCellHeight(15);
        jListMCAD.setFixedCellHeight(15);

  6. #6
    Membre habitué Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Points : 173
    Points
    173
    Par défaut
    Nan la ça ne fonctionne pas non plus, à mon avis le problème vient du fait que j'utilise un GridBagLayout, que j'utilise mal à mon avis

    Citation Envoyé par xixi31
    combine avec ceci peut-être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
        jListMCAE.setVisibleRowCount(5);
        jListMCAD.setVisibleRowCount(5);
     
        jListMCAE.setFixedCellWidth(100);
        jListMCAD.setFixedCellWidth(100);
     
        jListMCAE.setFixedCellHeight(15);
        jListMCAD.setFixedCellHeight(15);

  7. #7
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    tu connais jgoodies?
    ca doit pas venir du layout vu que j'utilise le GridBagLayout également....
    qu'as-tu comme problème?

  8. #8
    Membre habitué Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Points : 173
    Points
    173
    Par défaut
    Citation Envoyé par xixi31
    tu connais jgoodies ?
    Heu non

  9. #9
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    dsl... j'obtiens ca comme 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
    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
    64
    65
    66
    67
     
        public static void main(String[] args)
        {
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
     
     
     
     
     
        JList jListMCAE = new JList(new Object[]{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j"});//lstMCAE);
        JList jListMCAD = new JList();//lstMCAD);
     
        jListMCAE.setVisibleRowCount(5);
        jListMCAD.setVisibleRowCount(5);
     
        jListMCAE.setFixedCellWidth(100);
        jListMCAD.setFixedCellWidth(100);
        jListMCAE.setFixedCellHeight(12);
        jListMCAD.setFixedCellHeight(12);
     
        JScrollPane jScrollMCAE = new JScrollPane(jListMCAE);
        JScrollPane jScrollMCAD = new JScrollPane(jListMCAD);
        JButton jBAddAboMsg = new JButton();
        JButton jBSuppAbo = new JButton();
        //positionnement
        JPanel jPanelMCG = new JPanel();
        JPanel jPanelMCD = new JPanel();
        JPanel jPanelMCC = new JPanel();
        JPanel jPanelMCCentre = new JPanel();
        jPanelMCG.add(new JLabel("jLabelMCAD"), BorderLayout.NORTH);
        jPanelMCG.add(jScrollMCAD, BorderLayout.CENTER);
        jPanelMCD.add(new JLabel("jLabelMCAE"), BorderLayout.NORTH);
        jPanelMCD.add(jScrollMCAE, BorderLayout.CENTER);
     
        jPanelMCC.setPreferredSize(new Dimension(120, 12));
        jPanelMCC.setMinimumSize(new Dimension(120, 12));
        jPanelMCC.setLayout(new GridBagLayout());
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.gridx = GridBagConstraints.RELATIVE;
        gbc.gridx = 0;
        jPanelMCC.add(jBAddAboMsg, gbc);
        jPanelMCC.add(new JLabel("\n"), gbc);
        jPanelMCC.add(new JLabel("\n"), gbc);
        jPanelMCC.add(jBSuppAbo, gbc);
        gbc = new GridBagConstraints();
        gbc.gridx = GridBagConstraints.RELATIVE; //incremente la colonne tout seul
        gbc.gridy = GridBagConstraints.REMAINDER; //tjs sur la meme ligne
        gbc.weighty = 1.0; //100% du y
        gbc.weightx = 0.5; // 50% du x
        gbc.fill = GridBagConstraints.BOTH; //etirable en x et en y
        jPanelMCCentre.add(jPanelMCG, gbc);
        gbc.weightx = 0.0; //taille fixe
        gbc.fill = GridBagConstraints.VERTICAL; //etirable en y
        jPanelMCCentre.add(jPanelMCC, gbc);
        gbc.weightx = 0.5;
        gbc.fill = GridBagConstraints.BOTH;
        jPanelMCCentre.add(jPanelMCD, gbc);
     
            frame.setContentPane(jPanelMCCentre);
     
            frame.pack();
     
            frame.setLocation(500, 500);
     
            frame.setVisible(true);
        }

  10. #10
    Membre habitué Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Points : 173
    Points
    173
    Par défaut
    Mon problème c'est que j'ai une liste plus large que l'autre, c'est très moche

    Citation Envoyé par xixi31
    tu connais jgoodies?
    ca doit pas venir du layout vu que j'utilise le GridBagLayout également....
    qu'as-tu comme problème?

  11. #11
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    les listes sont de la même taille mais les scrollPanes sont différents du fait que celui de droite à beaucoup de lignes à afficher.

  12. #12
    Membre habitué Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Points : 173
    Points
    173
    Par défaut
    Ca dépend, dans mon cas, la liste qui est vide est plus large que celle qui est pleine (enfin le scrollpane qui contient ma liste)

    Citation Envoyé par xixi31
    les listes sont de la même taille mais les scrollPanes sont différents du fait que celui de droite à beaucoup de lignes à afficher.

  13. #13
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    tu peux toujours adapter le FixedCellWidth de tes listes selon la présence de la scroll vertical...

  14. #14
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    .. ou faire en sorte que la scroll vertical soit toujours affichée...

    Que des solutions de m**** !!

  15. #15
    Membre habitué Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Points : 173
    Points
    173
    Par défaut
    Oui du bidouillage quoi....
    Je vais laisser reposer ça ce soir, après une nuit de reflexion j'aurai peut-etre une idée de génie.... (il ne faut jamais dire jamais )

    Citation Envoyé par xixi31
    .. ou faire en sorte que la scroll vertical soit toujours affichée...

    Que des solutions de m**** !!

  16. #16
    Membre habitué Avatar de krolineeee
    Inscrit en
    Mars 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 232
    Points : 173
    Points
    173
    Par défaut
    Avec la ScrollBar affichée, les tailles ne bougent plus, bon par contre j'ai toujours une liste plus large que l'autre.... quelquesoit son contenue.

    Mmenfin, c'est toujours mieux qu'un ecran qui ressemble à un ressort (c'est moins pire ) Merci en tout cas

    Citation Envoyé par xixi31
    .. ou faire en sorte que la scroll vertical soit toujours affichée...

    Que des solutions de m**** !!

  17. #17
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour,
    Je pense avoir la solution ou tout du moins une partie de la solution. Si cela interesse toujours je peux poster mon bout de code.

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

Discussions similaires

  1. [Débutant] TextBox qui prend la taille de son conteneur
    Par Joel Pinto Ribeiro dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 23/10/2012, 14h08
  2. Un INPUT TEXT qui prend la taille d'un TD
    Par aelmalki dans le forum Balisage (X)HTML et validation W3C
    Réponses: 16
    Dernier message: 05/06/2010, 08h39
  3. PyGTK fenetre qui prend la taille de l'écran
    Par turboiii dans le forum GTK+ avec Python
    Réponses: 7
    Dernier message: 26/03/2009, 09h40
  4. Réponses: 1
    Dernier message: 14/06/2007, 10h04
  5. Un layer qui prend la taille de l'écran
    Par KibitO dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/01/2006, 16h09

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