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] de JPanel


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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
    Par défaut [JList] de JPanel
    Hummm

    je comprend pas ce que j'ai fais de mal (ou pas fais).

    je veux faire un JList de JPanel

    J'ai donc implementer un ListCellRenderer, et ajouter un tableau de JPanel dans ma list ... le nombre de JPanel ajouter dans la list est bon .. mais ils sont vide ...

    JPanel a mettre dnas la liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public class BAAreaInfoPan extends JPanel {
     
    	BAAreaInfoPan()
    	{
    		JLabel label = new JLabel("toto      ");
    		this.add(label);
    		JLabel label2 = new JLabel("toto       ");
    		this.add(label2);
     
    		this.setSize(this.getPreferredSize());
    	}
    }
    le renderer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    import java.awt.Component;
     
    import javax.swing.JList;
    import javax.swing.ListCellRenderer;
     
     
    public class MyListRenderer implements ListCellRenderer{
    	public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
    		return (BAAreaInfoPan)value;
    	}
    }
    ajout:
    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
     
    ArrayList baAreaList = baparent.getParam().getBAAreaList();
     
    		//BAAreaInfoPan[] BAAPanlist = new BAAreaInfoPan[baAreaList.size()];
    		BAAreaInfoPan[] BAAPanlist = new BAAreaInfoPan[3];
    		for (int i = 0; i< 3; i++ )
    		{
    			BAAPanlist[i] = new BAAreaInfoPan();
     
    		}
    		JList baArealist = new JList();
    		baArealist.setListData(BAAPanlist);
    		baArealist.setCellRenderer(new MyListRenderer());
    		_baAreaInfo = new JScrollPane(baArealist);
    		_baAreaInfo.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    		_baAreaInfo.setBounds(gWidth+10, 2, this.getWidth()- gWidth-15, this.getHeight()-4);
    		this.add(_baAreaInfo);

  2. #2
    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
    Par défaut
    Personne ?? (c'est que je suis un peu coincée là ...)

  3. #3
    Membre éclairé
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Par défaut
    Ce que je fait dans ces cas pour un ListCellRender c'est d'étendre un JLabel
    et dans la méthode getListCellRendererComponent je positionne le texte et l'icone du JLabel suivant la classe de value que je récupère.

    Ceci dit je ne comprend pas à premère vue pourquoi ton code ne fonctionne pas! Qu'est ce qui s'affiche exactement, un scrollbar vide?

  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
    Par défaut
    Citation Envoyé par JMLLB
    Ce que je fait dans ces cas pour un ListCellRender c'est d'étendre un JLabel
    et dans la méthode getListCellRendererComponent je positionne le texte et l'icone du JLabel suivant la classe de value que je récupère.

    Ceci dit je ne comprend pas à premère vue pourquoi ton code ne fonctionne pas! Qu'est ce qui s'affiche exactement, un scrollbar vide?
    nan ce sont des panel de la bonne taille mais vide (sans mes toto ^^) et visiblement quand je met 3 JPanels j'ai bien un liste de taile 3 ect ...

  5. #5
    Membre éclairé
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Par défaut
    Je sais que ce n'est pas ce que tu veux faire, mais est-ce que ça fonctionne?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class BAAreaInfoPan extends JLabel{
     
    	BAAreaInfoPan()
    	{
                              super();
    		this.setText("toto       ");
    		this.setSize(this.getPreferredSize());
    	}
    }
    2e question: est-ce que tu as déjà afficher directement ton JPanel BAAreaInfoPan dans ton appli pour vérifier que les JLabels s'affichent correctement?

  6. #6
    Membre éprouvé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 83
    Par défaut
    Bonjour,

    Je ne suis pas certain que se soit ce que tu cherches mais bon voilà quand même !!

    Une applet représentant une JList de Personne et chaque personne est représentée par un JPanel (en GridLayout(2,2))

    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
    68
    69
    70
    71
    72
    73
    74
    75
     
    import java.awt.BorderLayout;
    import java.awt.Component;
    import java.awt.GridLayout;
     
    import javax.swing.DefaultListModel;
    import javax.swing.JApplet;
    import javax.swing.JLabel;
    import javax.swing.JList;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.ListCellRenderer;
    import javax.swing.ListSelectionModel;
     
     
    public class Main extends JApplet
    {
    	public void init()
    	{
     		JPanel princ = new JPanel();
     		princ.setLayout(new BorderLayout());
          DefaultListModel listModel = new DefaultListModel();
           int nbComponents = 100;
           for(int i=0;i<nbComponents;i++)
             listModel.addElement(new Personne(i));
     
           //Creation de la liste en mise dans un scroll.
           JList list = new JList(listModel);
           list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
           list.setSelectedIndex(0);
           list.setCellRenderer(new PersonneCellRenderer());
    		getContentPane().add(new JScrollPane(list));
    	}
     
       class Personne 
       {
          private int id;
     
        public Personne(int i)
        {
           id=i;
        }
        public int getId(){return id;}
        public JPanel getUI()
        {
           JPanel p = new JPanel();
           p.setLayout(new GridLayout(2,2));
     
           JLabel l_id = new JLabel("id="+id);
           p.add(l_id);
     
           JLabel l_ville = new JLabel("Ville de "+id);
           p.add(l_ville);
     
           JLabel l_nom = new JLabel("Nom de "+id);
           p.add(l_nom);
     
           JLabel l_prenom = new JLabel("Prénom de "+id);
           p.add(l_prenom);
     
           return p;
     
        }
       }
     
       class PersonneCellRenderer implements ListCellRenderer
       {
     
          public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus)
          {
             return ((Personne)value).getUI();
          }
     
       }
    }

  7. #7
    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
    Par défaut
    Citation Envoyé par JMLLB
    Je sais que ce n'est pas ce que tu veux faire, mais est-ce que ça fonctionne?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class BAAreaInfoPan extends JLabel{
     
    	BAAreaInfoPan()
    	{
                              super();
    		this.setText("toto       ");
    		this.setSize(this.getPreferredSize());
    	}
    }
    2e question: est-ce que tu as déjà afficher directement ton JPanel BAAreaInfoPan dans ton appli pour vérifier que les JLabels s'affichent correctement?
    alors 1 : ca marche j'ai 3 toto ^^
    et oui je l'ai deja afficher seul et il marchais j'avais "toto toto" bien visible ...

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

Discussions similaires

  1. JPanel et JList
    Par Bitte dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 07/07/2011, 22h52
  2. JList de JPanel
    Par vivelapsp dans le forum Composants
    Réponses: 0
    Dernier message: 25/04/2011, 22h36
  3. Mettre une image en Background d'un JPanel et d'une JList
    Par diabli73 dans le forum Composants
    Réponses: 8
    Dernier message: 29/01/2010, 15h35
  4. Paint, JPanel et JList
    Par JimEllison dans le forum 2D
    Réponses: 4
    Dernier message: 17/12/2009, 02h50
  5. Drag & Drop entre JList et JPanel
    Par caporaldead dans le forum Composants
    Réponses: 4
    Dernier message: 22/02/2009, 11h05

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