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 :

AutoCompleteDecorator sur JComboBox


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut AutoCompleteDecorator sur JComboBox
    Bonjour,

    J'ai un petit problème avec l'utilisation de l'auto complete decorator de swingX.
    En effet, j'ai constaté il y a peu de temps que le renderer de ma combo était pris en compte uniquement dans les "valeurs possibles" affichés lorsque l'on clique sur la combo, mais pas dans l'auto complétion, ni dans la valeur sélectionnée. (la valeur sélectionnée affichée par ma combo avec l'auto complete decorator correspond à la valeur sans traitement du renderer, l'auto complétion fonctionne avec les valeurs sans traitement du renderer)

    J'ai donc fait quelques recherches, et j'ai essayé d'associer un custom ObjectToStringConverter. Pour cela j'ai externalisé le traitement fait dans mon renderer, et je fais appel à ce code dans la méthode getPreferredStringForItem.
    Cela a résolu une partie du problème, en effet la valeur sélectionné s'affiche correctement maintenant, mais ça ne résout pas le problème de l'auto complétion, qui ne prend toujours pas en compte les valeurs après traitement du code du renderer.

    A noter que j'utilise une vieille lib de swingX (swingx-2006_10_08.jar), peut-être que ceci est un bug connu qui a été résolu depuis, mais je n'ai pas trouvé d'informations à ce sujet. (et vu que c'est un vaste projet, je n'ai pas la liberté de modifier une librairie)

    Une partie du 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
    comboValue = new JComboBox(((MSearchComboValue)model).getComboModelValue());
    comboValue.setRenderer(createRendererValue());
    comboValue.setEnabled(false);
    comboValue.setPreferredSize(new Dimension(0, comboValue.getPreferredSize().height));
    AutoCompleteDecorator.decorate(comboValue, new ObjectToStringConverter() {
    	public String[] getPossibleStringsForItem(Object arg0) {
    		String preferred = getPreferredStringForItem(arg0);
    		return preferred == null ? new String[0] : new String[] { preferred };
    	}
    	public String getPreferredStringForItem(Object item) {
    		String result = null;
    			try {
    	        	result = VSearchComboValue.this.getText(item); // Traitement fait dans le renderer externalisé
    	        } catch(Exception ex) {
    	        	ex.printStackTrace();
    	        }
    		return result;
    	}
    });
    J'ai constaté que l'auto complétion faisait appel à la méthode getPreferredStringsForItem, mais la valeur passait en paramètre (arg0) est null si elle ne correspond pas à l'un des items présents dans la liste avant traitement du renderer. (ce qui est problématique, vu que l'utilisateur veut saisir la chaîne présente qui ressort après traitement du renderer)

    Si quelqu'un a une idée sur comment résoudre le problème, ça me serait grandement utile.

    Merci bien !
    Laurent.

  2. #2
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut
    Bonjour,

    Donc même si personne n'a répondu, je tiens à préciser que le problème ne vient pas de la classe AutoCompleteDecorator, en essayant de faire une petite démo runnable reproduisant le problème je me suis aperçu que ça marchait très bien, même avec un renderer sur la combo.

    C'est le couplage du look&feel Substance avec une combo qui a un renderer, et qui est décoré avec l'AutoCompleteDecorator qui provoque le problème que je cite dans mon message précédent.

    Je ne pense pas qu'il y ait véritablement de "solution" du coup, donc n'hésitez pas à supprimer le post.

    Merci,
    Laurent.

  3. #3
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Grosso modo, il te faut mettre à jour ta version de Swingx en prenant celle fournie par Substance et son extension spécifique pour Swingx.

    Enfin la développement de Substance ayant été arrêté, je te conseille plutôt de t'orienter sur son fork: Insubstancial

Discussions similaires

  1. Détaille Technique sur JComboBox
    Par wagui26 dans le forum Débuter
    Réponses: 2
    Dernier message: 30/04/2009, 10h45
  2. Question sur JComboBox
    Par donnadieujulien dans le forum Composants
    Réponses: 6
    Dernier message: 10/07/2008, 11h43
  3. [Débutant] Problème sur JComboBox
    Par bbyoulie dans le forum Débuter
    Réponses: 4
    Dernier message: 30/04/2008, 10h06
  4. Réponses: 7
    Dernier message: 17/04/2007, 13h51
  5. Focus Listener sur JComboBox
    Par grabriel dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 30/12/2006, 12h11

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