Bonjour,
J'aimerais savoir quelle fonction permet d'ajouter un elt de type String à une JList.
Merci d'avance
Version imprimable
Bonjour,
J'aimerais savoir quelle fonction permet d'ajouter un elt de type String à une JList.
Merci d'avance
Tu dois passer par un DefaultListModel :
et voilaCode:
1
2
3
4 DefaultListModel dlm = new DefaultListModel(); JList jl = new JList(dlm); dlm.addElement("toto");
OK Je vais essayer. Merci bcp
Ca a l'air de marcher.
Juste une autre petite question : je veux ajouter cette DefaultListModel à un panel, et y insérer une barre de défilement sur la droite.
Avant, avec la JList, on pouvait faire :
mais maintenant, avec le DefaultListModel ceci ne fonctionne plus.Code:jPanel.add(new JScrollPane(jList), null)
Comment puis je faire?
Déjà évite de mettre des contraintes d'insertion à null, ca peut avoir des comportement assez bizard.
Utilise qqchose comme BorderLayout.CENTER.
Sinon y a pas de raison que ca ne marche pas.
Ca ne marche pas : maintenant je mets :
jPanel.add(DefaultListModel, new XYConstraints(140, 36, 153, 153));
Le compilateur me met que la méthode add ne prend pas de DefaultListModel
En fait, voila ce que je veux faire : je veux insérer des String uns à un dans une JList, et mettre ces elts de plusieurs couleurs, selon leur signification.
Savez vous comment je peux faire?
Ca c normal, c la JList qu'il fo ajouter.
Essai ca :
Si ca ne marche toujorus pas, c'est bien etrange.Code:
1
2
3
4
5
6 ]JScrollPane jsp = new JScrollPane(maList); jsp.setPreferedSize(100,100); //ou la taille que tu veux jPanel.setLayout(new BorderLayout()); jPanel.add(jsp,BorderLayout.CENTER);
J'ai du mal à suivre l'enchaînement de questions...
En ce qui concerne le JScrollPane, un simple :suffit chez moi.Code:
1
2 panel.setLayout(new BorderLayout()); panel.add(new JScrollPane(myJList), BorderLayout.CENTER);
Nicolas
Pour peindre les éléments de ta liste, il faut passer par un ListCellRenderer.
une fois que tu as déclaré cette classe, tu n as plus qu à l'appliquer à ta liste :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 class MyCellRenderer extends JLabel implements ListCellRenderer { public MyCellRenderer() { setOpaque(true); } public Component getListCellRendererComponent(JList list, Object value,int index, boolean iss, boolean chf) { /***/ Mise en forme ici en focntion de value, index, ... Exemple : if(value.equals("toto") { setForeground(Color.BLUE); } else { setForeground(Color.RED); } /***/ return this; } }
Code:maListe.setCellRenderer(new MyCellRenderer());
Super. Ca marche.
Par contre, savez vous comment faire pour insérer des txtes de différentes couleurs? Pour l'instant j'ai fait :
Le pb, c'est qu'au lieu de mettre une seule ligne en bleue, il me met tt le contenu de la liste en bleu. Savez vous comment ne mettre qu'une seule ligne de couleur?Code:
1
2
3
4
5
6
7
8 jList = new JList(DefaultListModel); DefaultListModel.addElement("toto"); jList.setForeground(Color.BLUE); DefaultListModel.addElement("tutu"); JPanel.setLayout(xYLayout1); JPanel.add(jList, new XYConstraints(140, 36, 153, 153));
Visiblement tu ne lis pas toutes les réponses que je te poste :D
Je t tout expliqué juste au dessus pour colorier à ta guise les lignes de ta JList.
Merci, je ne l'avais effectivement pas vu ;-)
Il y a qque chose que je ne comprends pas tres bien :
J'ai implémenté ma méthode getListCellRendererComponent.
Mais je ne vois pas ou est ce que l'on fait appel à elle.
On créé bien le cellRenderer grace à l'appel : jList.setCellRenderer(new MyCellRenderer()); . Ou est ce que l'on doit se servir de la fonction getListCellRendererComponent?
Merci d'avance
Tu n'as pas besoin de l'utiliser.
C'est la JList qui va faire appelle à elle quand elle va effectuer son rendu.
Une fois que tu as fait tout ca, c fini. Normalement tout devrai fonctionner correctement.