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

API standards et tierces Java Discussion :

Filtre un ArrayList


Sujet :

API standards et tierces Java

  1. #1
    Membre éclairé Avatar de the watcher
    Inscrit en
    Juillet 2003
    Messages
    356
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 356
    Par défaut Filtre un ArrayList
    Bonjour les amis.
    J'ai rempli mon Arraylist comme suit :
    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
    	public static ArrayList<ArticleFourAS400> getListArticleFourAS400(){
    		connexion = new BDConnectAS400();
    		reception = new AddReception();
    		String requette = "SELECT DISTINCT B33STFC.FTEFAL01.NARTEF, B33STFC.FTEFAL01.MDIREF, B33STFC.FTEFAL01.LARFEF,"+"" 
    					 +" B33STFC.FTTBAL01.PXACTF, B33STFC.FTEFAL01.NFOUEF"+""
    					+" FROM B33STFC.FTEFAL01, B33STFC.FTTBAL01 WHERE B33STFC.FTTBAL01.NARTTF = B33STFC.FTEFAL01.NARTEF AND"+"" 
    					+" CRAYEF in ('205','208') FETCH FIRST 30 ROWS ONLY";		
     
    		Statement state;
    		ResultSet res;
    		ArrayList<ArticleFourAS400> list = new ArrayList<ArticleFourAS400>();
     
    		try{
    			state = connexion.getInstance().createStatement();
    			res = state.executeQuery(requette);
    			while(res.next()){
    				ArticleFourAS400 artFourAS400 = new ArticleFourAS400();
    				artFourAS400.setNARTEF(res.getString(1));
    				artFourAS400.setLARFEF(res.getString(3));
    				artFourAS400.setPXACTF(res.getString(4));
    				artFourAS400.setNFOUEF(res.getString(5));
    				list.add(artFourAS400);
    			}
    			res.close();
    			return list;
    		}catch(SQLException e){
    			e.printStackTrace();
    		}
    		return null;
    et je voudrais filtrer cette ArrayList selon la sélection du combobox, et afficher le résultat dans une Table, alors j'ai fais ceci :
    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
    public JComboBox getComboFournisseur() {
            if (ComboFournisseur == null) {
                ComboFournisseur = new JComboBox();
                ComboFournisseur.setBounds(135, 130, 352, 22);
                ComboFournisseur.setSelectedIndex(-1);
                ComboFournisseur.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                      /** on recupere notre Fournisseurs ( stocker en temps que Object donc on le cast)*/
                        DAOFourEtNumero selectedFournisseur = (DAOFourEtNumero) ComboFournisseur.getSelectedItem();
                        /** tu affiche le nom et l'id du fournisseur */
                        TxtNumFourniss.setText(Integer.toString(selectedFournisseur.getId()));
                        txtNomFournisseur.setText(selectedFournisseur.getNomFour());
                        Object code = ComboFournisseur.getSelectedItem();
     
                        ArrayList<ArticleFourAS400> lister = DAOArticleFourAS400.getListArticleFourAS400();
                             for(ArticleFourAS400 myList : lister){
                        	        if(myList.getNFOUEF().equals("6739")) {                   	
                        		    Table.setModel(new ArticleFourAS400TableModel(lister));
                        		}else{Table.setModel(new ArticleFourAS400TableModel());
                        		}}}
                });
            }
            return ComboFournisseur;
        }
    Malheuresement, ça ne fonctionne pas et j'ai ces lignes d'erreur :
    Exception occurred during event dispatching:
    java.lang.NullPointerException
    at ci.dataService.ArticleFourAS400TableModel.getRowCount(ArticleFourAS400TableModel.java:46)
    at javax.swing.JTable.getRowCount(JTable.java:2640)
    at javax.swing.plaf.basic.BasicTableUI.createTableSize(BasicTableUI.java:1643)
    at javax.swing.plaf.basic.BasicTableUI.getPreferredSize(BasicTableUI.java:1684)
    ...
    Voici deux jours que je galère sur ce problème
    Quelqu'un pour me donner un coup de main s'il vous plaît.
    Merci d'avance et bonne et heureuse année à tous.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 25
    Par défaut
    Bonjour,


    Ouhhh la... de l'AS400 dans l'air
    Il manque un peu de code.. pour débugger ca..

  3. #3
    Membre Expert Avatar de rtg57
    Homme Profil pro
    Autodidacte
    Inscrit en
    Mars 2006
    Messages
    1 343
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 343
    Par défaut
    Bonjour,

    comme l'indique le message d'erreur, il y a une exception de 'null pointer' à la ligne 46 dans la méthode getRowCount() de la table.

    Cette méthode doit renvoyer le nombre de lignes de la table.
    Quel est le code sur cette ligne ?

    Bien souvent, on a un indice de table qui va de '0' à 'getRowCounts() - 1', et l'erreur classique consiste à balayer les items de la table de '0' à 'getRowCounts'.
    Résultat, on se retrouve à vouloir adresser un dernier item qui n'existe pas, d'où l'exception 'Null Pointer'.

    Peut être que c'est le cas ici...

    @ bientôt...

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Quelques remarques sur ta méthode getListArticleFourAS400()...

    • Les fermetures de ressources se font via un try/finally.
    • De plus tu ne libères pas ta connection SQL ni ton statement !!!
    • "connexion" et "reception" sont des attributs static ? Pas terrible
    • Ta gestion des exceptions n'est pas propre : en cas d'erreur tu remplaces une SQLException par une NullPointerException



    Sinon pour ton problème, tu n'as pas indiqué de code de la ligne problématique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    at ci.dataService.ArticleFourAS400TableModel.getRowCount(ArticleFourAS400TableModel.java:46)
    a++

Discussions similaires

  1. filtre sur arraylist de dates
    Par j-mi-jim dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 04/08/2010, 15h08
  2. [File] filenameFilter -arrayList - filtre
    Par akunzler dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 21/06/2006, 14h43
  3. TADOTable et filtre
    Par GaL dans le forum C++Builder
    Réponses: 16
    Dernier message: 02/07/2002, 16h52
  4. Filtre passe Bande
    Par Mau dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 28/06/2002, 17h03
  5. Probleme de filtre dans bdd
    Par scorpiwolf dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/06/2002, 10h43

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