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

AWT/Swing Java Discussion :

probleme ListCellRenderer et JComboBox


Sujet :

AWT/Swing Java

  1. #1
    Membre du Club Avatar de Sp4ce
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 81
    Points : 67
    Points
    67
    Par défaut [RESOLU]probleme ListCellRenderer et JComboBox
    Bonjour,

    j'aimerais faire un JComboBox de selection de couleur, pour cela je veux utiliser l'interface ListCellRenderer afin d'avoir les couleurs.

    voila mon code :

    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
    private class ColorComboBox extends JComboBox implements ActionListener{
    		static final long serialVersionUID = 1L;
     
    		private Color selectedColor;
     
    		public ColorComboBox(Color color){
    			selectedColor = color;
     
    			ColorCellRenderer renderer = new ColorCellRenderer();
    			renderer.setPreferredSize(new Dimension(40, 15));
    			this.setRenderer(renderer);
     
     
    			this.addItem(Color.RED);
    			this.addItem(Color.YELLOW);
    			this.addItem(Color.BLUE);
    			this.addItem(Color.GREEN);
     
    			this.setSelectedItem(color);
     
    			this.addActionListener(this);
    		}
     
     
    		public ColorComboBox(){
    			new ColorComboBox(Color.RED);
    		}
     
    		public void actionPerformed(ActionEvent e){
    			try {
    				selectedColor = (Color)this.getSelectedItem();
    			} catch (java.lang.ClassCastException ex){
    			}
    		}
     
    		public Color getSelectedColor(){return selectedColor;}
     
    		private class ColorCellRenderer extends JPanel implements ListCellRenderer{
    			static final long serialVersionUID = 1L;
    			public ColorCellRenderer() {
    		         setOpaque(true);
    			}
    			public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus){
    				Color color;
    				try {
    					color = (Color)value;
    				} catch (java.lang.ClassCastException e){
    					color = Color.BLACK;
    				}
    				setBackground(color);
     
    				return this;
    			}
    		}
    	}

    voila mon probleme :

    quand je clique sur la comboBox, j'ai bien mes quatres différents JPanel avec les bonnes couleurs qui sont renvoyés, pas de probleme. Par contre quand je sélectionne, la couleur disparait... comme sur l'image (cliquez pour agrandir) :



    voila je sais pas quoi faire... je pense que je dois pas bien comprendre ListCellRenderer, mais je vois pas où ?? Est-ce que ça customize seulement quand le comboBox est cliqué ??

    merci pour vous aide

  2. #2
    Membre du Club Avatar de Sp4ce
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 81
    Points : 67
    Points
    67
    Par défaut
    Bonjour,

    je up mon sujet suite à une erreur de forum... je voudrais pas qu'il s'oublie dans les profondeurs du forum

    j'ai toujours pas trouvé de solutions (enfin bon j'ai fait autre chose aussi parce que c'est pas une fonctionnalités primordiales), mais toutes les idées sont les bienvenus

  3. #3
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Points : 114
    Points
    114
    Par défaut
    Bonjour,

    j'ai regardé vite ton truc mais si la couleur disparaît quand tu sélectionne un élément de ta combo, c'est parce que tu n'as pas mis d'editor.

    Crée et ajoute à ta combo ton propre ComboBoxEditor comme tu l'as fais pour le renderer afin de renvoyer une couleur (Color) lors de la sélection (getItem de l'editor je pense), ou autre chose (mais je ne pense pas vu que tu te base sur une couleur pour ton renderer).

  4. #4
    Membre du Club Avatar de Sp4ce
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 81
    Points : 67
    Points
    67
    Par défaut
    Salut,

    dsl de te contredire, mais en fait l'interface ComboBoxEditor semble être utile que si l'on a un JComboBox éditable c'est ce que l'on trouve en tout cas dans le "How to use ComboBox" de Sun.

    En effet si l'on va à la section "Providing a custom renderer" et bien on voit:

    An editable combo box, on the other hand, uses an editor to display the selected item.(...) A combo box's editor must implement ComboBoxEditor.
    Cependant le tutorial ne traite que du cas non-editable avec un ListCellRenderer
    This section shows how to provide a custom renderer for an uneditable combo box.
    enfin bon dans tous les cas, je suis perdu, et j'arrive pas à customiser cette #@!*!## de JComboBox !!

    Cependant, j'ai vu qu'il existait un component javax.swing.JColorChooser alors je vais chercher de ce coté, mais bon, c'est dommage :'(

  5. #5
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    130
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 130
    Points : 114
    Points
    114
    Par défaut
    Oups désolé.

    Je viens de regarder tes liens et apparemment pour le renderer sur le site de sun ils passent par l'index sélectionné.

    Tu pourrais faire pareil en ayant stocké en parallèle la liste de tes couleurs dans le même ordre que celui de ta combo (ou tu peux passer par le modèle de ta combo) => ainsi dans ton renderer tu vérifies l'index et tu modifies ton JPanel à afficher selon la couleur associée à cet index.

  6. #6
    Membre du Club Avatar de Sp4ce
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 81
    Points : 67
    Points
    67
    Par défaut
    Enfin voila, j'ai laissé tomber pour deux raisons:

    - j'y arrivais pas
    - même si j'y arrivais, je n'aurais pas eu un aussi beau sélecteur de couleur que celui fournit par l'API. Donc ça sert à rien de réinventer la roue.

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

Discussions similaires

  1. probleme avec un JComboBox et une JTable
    Par claire13 dans le forum Composants
    Réponses: 8
    Dernier message: 25/04/2008, 15h29
  2. Probleme avec une JComboBox et ComboBoxModel
    Par bassim dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 23/09/2007, 13h44
  3. Probleme de retour JCombobox
    Par Invité dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 08/06/2007, 16h19
  4. Probleme avec deux JComboBox
    Par zandb69 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 26/05/2006, 11h58
  5. Probleme entre JComboBox/CheckBox
    Par bygui dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 11/05/2006, 11h26

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