probleme avec ListCellRenderer

probleme avec ListCellRenderer - Java - Programmation

Marsh Posté le 22-03-2003 à 01:45:31    

en fait j aimerai un combobox coloré
pour que ce soit plus clair voila un simplification de mon code
 

Code :
  1. public static void main(String args[])
  2.   {
  3.    JFrame frame = new JFrame("colors" );
  4.    Color[] colors={Color.blue,Color.green};
  5.    JComboBox combo=new JComboBox (colors);
  6.    combo.setRenderer(new MyCellRenderer());
  7.    frame.setDefaultCloseOperation(3);
  8.    frame.getContentPane().add(combo,"Center" );
  9.    frame.setSize(300,100);
  10.    frame.setVisible(true);
  11.   }
  12. class MyCellRenderer extends JLabel implements ListCellRenderer {
  13.      public Component getListCellRendererComponent(JList list,Object value,int index,boolean isSelected,boolean cellHasFocus)
  14.      {
  15.         if (value instanceof Color)
  16.         {
  17.      Color c = (Color) value;
  18.      setBackground(c);
  19.  }     
  20.          return this;
  21.      }
  22. }


 
 
le combo reste gris vous voyez ou ca cloche vous?


Message édité par veryfree le 27-01-2005 à 13:50:27
Reply

Marsh Posté le 22-03-2003 à 01:45:31   

Reply

Marsh Posté le 22-03-2003 à 08:51:38    

:) Normal! Tu utilises un JLabel, avec pas de texte dedans, donc, sa taille "normale" c'est 0x0!
 
Met un JPanel à la place (donc, ça :  
 

Code :
  1. class MyCellRenderer extends JPanel implements ListCellRenderer {
  2.     public Component getListCellRendererComponent(JList list,Object value,int index,boolean isSelected,boolean cellHasFocus) {
  3.        if (value instanceof Color) {
  4.            Color c = (Color) value;
  5.            setBackground(c);
  6.         }     
  7.         return this;
  8.     }
  9. }

 
 
Encore mieux :  
 
 

Code :
  1. class MyCellRenderer extends JPanel implements ListCellRenderer {
  2.        
  3.         private JPanel p;
  4.         public MyCellRenderer() {
  5.             super();
  6.             p = new JPanel();
  7.             setLayout(new FlowLayout());
  8.             add(p);
  9.         }
  10.         public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
  11.             if (value instanceof Color) {
  12.                 p.setBackground((Color) value);
  13.             }     
  14.             return this;
  15.         }
  16.     }

 
 
Ca te fait des petits carrés de couleur au milieu d'une case grise..C'est plus foli (enfin, je trouve)
Vala! :)

Reply

Marsh Posté le 22-03-2003 à 14:09:33    

gfive a écrit :

:) Normal! Tu utilises un JLabel, avec pas de texte dedans, donc, sa taille "normale" c'est 0x0!
 
Met un JPanel à la place (donc, ça :  
 

Code :
  1. class MyCellRenderer extends JPanel implements ListCellRenderer {
  2.     public Component getListCellRendererComponent(JList list,Object value,int index,boolean isSelected,boolean cellHasFocus) {
  3.        if (value instanceof Color) {
  4.            Color c = (Color) value;
  5.            setBackground(c);
  6.         }     
  7.         return this;
  8.     }
  9. }

 
 
Encore mieux :  
 
 

Code :
  1. class MyCellRenderer extends JPanel implements ListCellRenderer {
  2.        
  3.         private JPanel p;
  4.         public MyCellRenderer() {
  5.             super();
  6.             p = new JPanel();
  7.             setLayout(new FlowLayout());
  8.             add(p);
  9.         }
  10.         public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
  11.             if (value instanceof Color) {
  12.                 p.setBackground((Color) value);
  13.             }     
  14.             return this;
  15.         }
  16.     }

 
 
Ca te fait des petits carrés de couleur au milieu d'une case grise..C'est plus foli (enfin, je trouve)
Vala! :)


 
 
  [:franck1135]  merci infiniment  [:franck1135]

Reply

Sujets relatifs:

Leave a Replay

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