Est-il possible d'avoir plusieurs couleur dans une jList?

Est-il possible d'avoir plusieurs couleur dans une jList? - Java - Programmation

Marsh Posté le 30-06-2003 à 12:41:57    

Salut a tous.
 
Je voulais savoir s'il est possible d'avoir plusieurs couleur pour les item du jList. Je m'explique: je dois faire un prog ki recoit des message pour savoir si une action c bien passée. je voudrais afficher les messages d'erreurs en rouge et le reste en noir dans la meme jList (en gros je fais un log...).
Es-ce possible? Si oui c koi la maniere de proceder pour pas changer la couleur d'un seul item, et non pas de toute la liste?
 
merci d'avance

Reply

Marsh Posté le 30-06-2003 à 12:41:57   

Reply

Marsh Posté le 30-06-2003 à 13:41:01    

Je pense que OUI.
 
Pour cela, il suffit d'implementer l'interface ListRenderer (ou un truc comme ca), pour la suite cf. tuts de sun


---------------
get amaroK plugin
Reply

Marsh Posté le 01-07-2003 à 01:40:47    

tu crée ton propre ListCellRenderer  
 

Code :
  1. class MyCellRenderer extends JLabel implements ListCellRenderer {
  2.          public Component getListCellRendererComponent(JList list,Object value,int index,boolean isSelected,boolean cellHasFocus)
  3.          {
  4.               if (value instanceof MsgLog) 
  5.               {
  6.                MsgLog msgLog = (MsgLog)value;
  7.               setBackground(msgLog.getColor());
  8.               setText(msgLog.getMessage());
  9.         }     
  10.                return this;
  11.          }
  12.    }

 
 
tu crée un objet MsgLog:

Code :
  1. public class MsgLog {
  2. private String message;
  3. private Color color;
  4. public MsgLog(String message,Color color){
  5. this.message=message;
  6. this.color=color;
  7. }
  8. public Color getColor(){
  9. return color;
  10. }
  11. public String getMessage(){
  12. return message;
  13. }
  14. }


 
puis dans ta Jlist tu fais:


JList list = new JList(tonModel); //tonModel = DefaultListModel
list.setCellRenderer(new MyCellRenderer());
tonModel.addElement(new MsgLog("ok",Color.green));


je crois que ca devrait marcher
 
il est 1h43 jdoit vraiment etre en manque de prog moi  :sweat:


Message édité par veryfree le 01-07-2003 à 01:46:27
Reply

Marsh Posté le 01-07-2003 à 08:07:04    

veryfree a écrit :


...
 
il est 1h43 jdoit vraiment etre en manque de prog moi  :sweat:


 
la prog c'est taboo, on en viendra tous a bout !!  :D  :sweat:


---------------
get amaroK plugin
Reply

Marsh Posté le 01-07-2003 à 10:49:45    

Merci bcp!

Reply

Marsh Posté le 01-07-2003 à 13:55:57    

bobuse a écrit :


 
la prog c'est taboo, on en viendra tous a bout !!  :D  :sweat:  


 
TOO A FAIT :D

Reply

Marsh Posté le 03-07-2003 à 14:17:03    


 
ca marche au moins?

Reply

Marsh Posté le 03-07-2005 à 16:02:48    

Salut
 
j'ai aussi besoin de faire une JList mais avec des couleurs différente selon les lignes.
 
j'ai implementer l'interface ListCellRenderer selon les conseils trouvé sur le site de java
 
http://java.sun.com/developer/tech [...] stomjlist/
 
mais quand je compile avec javac, j'ai une erreur:
 

Citation :


MyCellRenderer is not abstract and does not override abstract method getListCellRendererComponent (javax.swing.JList, java.lang.object, int, boolean, boolean) in javax swing.ListCellRenderer


 
Comme je debute en java, j'ai du mal à comprendre ce que veut dire exactement ce message d'erreur.
 
Merci

Reply

Marsh Posté le 03-07-2005 à 16:18:51    

ça compile quand je déclare ma class qui implement ListCellRenderer en abstract, m'ai je comprend pas pourquoi.
 
Blaise_laporte

Reply

Marsh Posté le 03-07-2005 à 16:23:02    

cherche toi un tuto sur les interfaces, classes abstraites et concretes.
(thinking in java, par exemple)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed