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

Composants Java Discussion :

Problème avec ma méthode de recherche dans une JList


Sujet :

Composants Java

  1. #1
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 211
    Points : 102
    Points
    102
    Par défaut Problème avec ma méthode de recherche dans une JList
    Bonjour,

    Voilà j'ai 4 JLists et j'ai voulu créer une fonction de recherche qui se trouve dans le listener du JTextField suivant:
    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
    56
    jTextFieldSearch.addKeyListener(new java.awt.event.KeyAdapter() {
    				public void keyPressed(java.awt.event.KeyEvent e) {
    					if(e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
    						if(!jTextFieldSearch.getText().trim().equals("")) {
    							boolean found = false;
    							int indices[] = new int[defaultListModelHouse.size()];
    							for(int i = 0; i < defaultListModelHouse.size(); i++) {
    								if(defaultListModelHouse.get(i).toString().startsWith(jTextFieldSearch.getText())) {
    									indices[i] = i;
    									//jListHouse.setSelectedIndex(defaultListModelHouse.indexOf(defaultListModelHouse.get(i).toString()));
    									found = true;
    								}
    							}
    							if(!found)
    								jListHouse.clearSelection();
    							else
    								jListHouse.setSelectedIndices(indices);
    							found = false;
    							indices = new int[defaultListModelApartment.size()];
    							for(int i = 0; i < defaultListModelApartment.size(); i++) {
    								if(defaultListModelApartment.get(i).toString().startsWith(jTextFieldSearch.getText())) {
    									indices[i] = i;
    									//jListApartment.setSelectedIndex(defaultListModelApartment.indexOf(defaultListModelApartment.get(i).toString()));
    									found = true;
    								}
    								if(!found)
    									jListApartment.clearSelection();
    								else
    									jListApartment.setSelectedIndices(indices);
    							}
    							found = false;
    							for(int i = 0; i < defaultListModelSummerCottage.size(); i++) {
    								if(defaultListModelSummerCottage.get(i).toString().startsWith(jTextFieldSearch.getText())) {
    									//jListSummerCottage.setSelectedIndex(defaultListModelSummerCottage.indexOf(defaultListModelSummerCottage.get(i).toString()));
    									found = true;
    								}
    								if(!found)
    									jListSummerCottage.clearSelection();
    								else
    									jListSummerCottage.setSelectedIndices(indices);
    							}
    							found = false;
    							for(int i = 0; i < defaultListModelWinterCottage.size(); i++) {
    								if(defaultListModelWinterCottage.get(i).toString().startsWith(jTextFieldSearch.getText())) {
    									//jListWinterCottage.setSelectedIndex(defaultListModelWinterCottage.indexOf(defaultListModelWinterCottage.get(i).toString()));
    									found = true;
    								}
    								if(!found)
    									jListWinterCottage.clearSelection();
    								else
    									jListWinterCottage.setSelectedIndices(indices);
    							}
    						}
    					}
    				}
    			});
    Le problème est qu'avec cette fonction, lorsqu'elle me trouve un élément correspondant à ma recherche dans une ou plusieurs de ces JLists, cela me sélectionne la 1ère ligne aussi tout le temps même si cela ne correspond pas à ma recherche. Si ma recherche ne correspond à rien là rien n'est sélectionné.

    Je tourne en rond depuis un petit bout de temps et du coup je n'arrive pas à trouver la solution qui est sûrement simple.

    Si vous avez une idée vous êtes le bienvenu.

    Merci et bonne journée.

  2. #2
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    C'est normal, tu crées un tableau ne contenant que des 0 et de la taille la taille de la liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int indices[] = new int[defaultListModelHouse.size()];
    et quand tu veux sélectionner un élément tu fais :
    Ce qui fait que si t'as une liste par exemple contenant 5 éléments, et que le 1 et le 3 sont sélectionnés, ça te fait un tableau d'indices comme ceci:

    Sinon pour filtrer une liste (pas par sélection, mais vraiment un filtrage -le contenu de la liste change-), j'ai fait ceci récemment :
    http://www.developpez.net/forums/sho...d.php?t=378266
    (si ça t'intéresse, sinon tant pis )

  3. #3
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 211
    Points : 102
    Points
    102
    Par défaut
    OK merci Rom. Par contre ton API de filtrage ne m'intéresse pas car j'ai besoin de garder tous les éléments visibles sur la JList.

    Du coup comment je peux faire car j'ai une sélection multiple sur chaque JList et j'ai l'impression que pour sélectionner plusieurs éléments d'une JList il n'y a que "void setSelectedIndices(int [] i)"?

    Merci encore pour ton aide.

  4. #4
    Membre expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Points : 3 080
    Points
    3 080
    Par défaut
    Citation Envoyé par nicofromChina
    Du coup comment je peux faire car j'ai une sélection multiple sur chaque JList et j'ai l'impression que pour sélectionner plusieurs éléments d'une JList il n'y a que "void setSelectedIndices(int [] i)"?
    Oui, utilise bien cette méthode, mais ne lui passe pas un tableau qui contient 0 1 0 3 0, mais un tableau qui contient 1 3...

    Bon allez, j'ai le temps (t'as de la chance):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    List<Integer> indices = new ArrayList<Integer>();
    for(int i = 0, size = taList.size(); i < size; i++) {
        if(taCondition) {
            indices.add(i);
        }
    }
    int[] sel = new int[indices.size()];
    for(int i = 0; i < sel.length; i++) {
        sel[i] = indices[i];
    }
    taList.setSelectedIndicies(sel);
    (On est obligé de faire une copie "à la main" à cause de la convertion List<Integer> -> int[])

  5. #5
    Membre régulier
    Inscrit en
    Mai 2006
    Messages
    211
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 211
    Points : 102
    Points
    102
    Par défaut
    J'aurais du penser à passer par une ArrayList

    Merci beaucoup en tout cas.

    Bonne journée

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

Discussions similaires

  1. Problème avec le passage à la ligne dans une Textbox
    Par iFlo1 dans le forum Général Dotnet
    Réponses: 0
    Dernier message: 22/03/2009, 13h47
  2. Problème avec la gestion des fichier dans une JList()
    Par chebmo1986 dans le forum Composants
    Réponses: 3
    Dernier message: 18/02/2009, 23h49
  3. Réponses: 3
    Dernier message: 07/05/2008, 13h30
  4. problème avec les sauts de ligne dans une string
    Par hexdoc dans le forum Langage
    Réponses: 6
    Dernier message: 02/05/2008, 15h28
  5. Méthode de recherche dans une table de classes
    Par abir84 dans le forum Ruby
    Réponses: 8
    Dernier message: 05/10/2007, 13h58

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