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 :

[JComboBox] Séparateur dans une JComboBox


Sujet :

AWT/Swing Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Points : 4
    Points
    4
    Par défaut [JComboBox] Séparateur dans une JComboBox
    Bonjour,

    j'ai trouvé un bout de code permettant de séparer les différents éléments dans une JComboBox. (code ici).

    Voici la liste de l'exemple (chacun des tableaux est séparé par une ligne séparatrice) :
    String[][] str =
    {{"A" ,"B" ,"C" },
    {"1" ,"2" ,"3" },
    {"abc","def","ghi"}
    };

    Dans cette liste, aucun problème, il est possible de se déplacer dans les éléments en utilisant le clavier, p. ex. la lettre "a" pour aller sur l'élément "A" ou sur l'élément "abc".

    J'ai remarqué un comportement étrange s'il y a des elements commençant par la lettre "S". Il n'est plus possible de naviguer entre les différents éléments commençant cette lettre à l'aide de la touche clavier "s", si ces éléments ne se trouvent pas à l'intérieur du même séparateur.

    En utilisant la liste ci-dessous, le problème apparaît: il n'est pas possible de naviguer entre "S" et "Ssss":
    String[][] str =
    {{"A" ,"B" ,"S" },
    {"1" ,"2" ,"3" },
    {"abc","Ssss","ghi"}
    };

    Quelqu'un pourrait-il tester ce code ou m'expliquer le comportement de cette mystérieuse JComboBox?

    Merci d'avance pour votre aide!

  2. #2
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    Fonctionnellement, ça ne me paraît pas "étrange" (de ne pouvoir naviguer en shortcut que dans une sous-liste) comme comportement : sauf si l'impossibilité n'existe que dans le cas d'un S...
    " Jag blev dömd för fildelning och allt jag fick var en sketen t-shirt. " (tankafritt.nu)
    PAS DE REPONSE PAR MESSAGE PRIVE ! Penser au bouton Résolu en bas de la discussion...

  3. #3
    Membre expérimenté Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Points : 1 635
    Points
    1 635
    Par défaut
    Bonjour

    Je pense que c'est le code respondable des raccourcis (même si je trouve ça étrange...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    String tempItem = (String)combo.getSelectedItem();
          if (SEPARATOR.equals(tempItem)) {
            combo.setSelectedItem(currentItem);
          } else {
            currentItem = tempItem;
    Le problème viendrai de là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     final String SEPARATOR = "SEPARATOR";
    A remplacer par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     final String SEPARATOR = "__SEPARATOR";
    par exemple.

    A tester

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    C'était bien à cause du FINAL String SEPARATOR que ca ne fonctionnait pas.

    Merci beaucoup!

  5. #5
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Ca m'avait un peu choqué de voir une constante comme String, qu'il teste avec equals. Il doit y avoir moyen d'améliorer ça, parce que là ça risque de poser le même problème pour les mots commençant par "_".

    Peut être en déclarant SEPARATOR comme un Object que l'on compare avec ==, ça ira mieux. Sinon, utiliser une enum.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2005
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Comment m'y prendre?

    J'ai dans cette comboox des séparateurs qui ont le même comportement que d'autres éléments de la combobox, que je cherche à rendre non focusable.

    Cela veut dire que lors de la navigation dans la combobox avec les flèches haut/bas, il ne sera plus nécessaire de vérifier si l'on tombe sur l'élément séparateur pour exécuter une action, et que le clic souris sur cet élément ne sera pas possible.

    Y'a-t-il une propriété à utiliser?

    merci pour vos conseils!

  7. #7
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    J'ai l'impression que tu en demandes trop pour une JComboBox. Peut-être seraît-il plus simple de la créer toi-même en utilisant un JTextField, un JButton et un JPopupMenu.
    Le JPopupMenu est beaucoup plus "customisable" que la JComboBox, tu devrais pouvoir faire ce que tu veux. Par contre, tu devras prendre en compte des problèmes de rendu graphique. Si tu recherches juste une apparence fonctionnelle, ca se limite aux positions/taille, mais pour avoir un truc beau, c'est plus difficile (dessin sur le JButton, couleurs, bordures, et respecter le look and feel).

    A toi de voir, mais une JComboBox n'a pas été prévue pour être customisée comme ça.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

Discussions similaires

  1. [JComboBox] image dans une Jcombobox
    Par Ceubex dans le forum Composants
    Réponses: 2
    Dernier message: 01/08/2010, 15h52
  2. Réponses: 11
    Dernier message: 07/09/2007, 15h11
  3. Rendu de l'élément sélectionné dans une JComboBox
    Par TiChabin972 dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 16/05/2007, 21h34
  4. trouver un item dans une jComboBox
    Par nutix2003 dans le forum AWT/Swing
    Réponses: 13
    Dernier message: 16/05/2007, 17h51
  5. [JCombobox] modif d'une jcombobox par rapport à une autre
    Par The Wretched dans le forum Composants
    Réponses: 2
    Dernier message: 21/03/2005, 10h35

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