Bonjour,
J'aimerais savoir quelle fonction permet d'ajouter un elt de type String à une JList.
Merci d'avance
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 voila
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 DefaultListModel dlm = new DefaultListModel(); JList jl = new JList(dlm); dlm.addElement("toto");
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 : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : 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 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 : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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![]()
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.
Partager