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 :

Vérifié le type d'entrée sur une colonne


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Par défaut Vérifié le type d'entrée sur une colonne
    Bonjour à tous,

    Je reste bloqué sur le type saisie dans une colonne.
    En effet, je fais un calcul sur la colonne quantités comptés!
    Et j'aimerais que cette colonne dès qu'on saisie autre chose qu'un entier,ça ne me valide pas la saisie.
    J'ai essayé d'ajouté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }
    Mais j'ai une erreur :
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at com.peofofo.jtable.Model.Tableau_article_inventaire_model.getColumnClass(Tableau_article_inventaire_model.java:98)
    La ligne 98 est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return getValueAt(0, c).getClass();
    Voici l'ajout de donnée suite de 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
    private void initTableau() {
    		list_colonnes.add(0, new ArrayList<String>());
    		list_colonnes.get(0).add(0, "Produit");
    		list_colonnes.add(1, new ArrayList<String>());
    		list_colonnes.get(1).add(0, "Dernier inventaire");
    		list_colonnes.add(2, new ArrayList<String>());
    		list_colonnes.get(2).add(0, "Nb doses sur 1 Litre");
    		list_colonnes.add(3, new ArrayList<String>());
    		list_colonnes.get(3).add(0, "Quantités restantes");
    		list_colonnes.add(4, new ArrayList<String>());
    		list_colonnes.get(4).add(0, "Quantités comptés");
    		addrow();
    	}
     
    	public void addrow() {
    		// TODO Auto-generated method stub
    		list_lignes.clear();// On efface les lignes
    		//On met a jour les lignes:
    		articles=articlesDao.select("inventaire", "1", 0);
    		for(int i = 0; i < articles.size(); i++){
    			// On affiche la date sous le bon format
    			try {
    				date= inventairesDao.date_max("id_articles", String.valueOf(articles.get(i).getId()));
    			//new Datetime(articles.get(i).getDate_creation());
    			} catch (Exception e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
     
    			// On met les infos dans le tableau
    			list_lignes.add(i, new ArrayList<ArrayList<Object>>());
    			list_lignes.get(i).add(0, new ArrayList<Object>());
    			list_lignes.get(i).get(0).add(0, articles.get(i).getNom());
    			list_lignes.get(i).get(0).add(1, articles.get(i));
    			list_lignes.get(i).add(1, new ArrayList<Object>());
    			list_lignes.get(i).get(1).add(0, date);;
    			list_lignes.get(i).add(2, new ArrayList<Object>());
    			list_lignes.get(i).get(2).add(0, articles.get(i).getNb_dose());
    			list_lignes.get(i).add(3, new ArrayList<Object>());
    			list_lignes.get(i).get(3).add(0, articles.get(i).getQuantites_restantes());
    			list_lignes.get(i).add(4, new ArrayList<Object>());
    			list_lignes.get(i).get(4).add(0, null);
    		}
    		this.fireTableDataChanged();
    	}
    Je ne sais plus trop ou chercher!
    Merci

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu dois traiter séparément le cas ou getValueAt te retourne null. Car on ne peux pas appeler getClass() sur null

    Aussi, Class est un type paramétré, il faut donc préciser le paramètre ou ? pour être correct.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public Class<?> getColumnClass(int c) {
            Object o =  getValueAt(0, c);
            if (o==null)
                return Void.class;
            else
                return o.getClass();
        }

    Enfin, cette méthode n'est pas la plus fiable, il serait préférable d'avoir directement un tableau avec la classe de chaque colonne, plutot que d'essayer de deviner.

  3. #3
    Membre éclairé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Mai 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2008
    Messages : 382
    Par défaut
    Merci pour ta réponse
    D'accord j'ai compris qu'il vaut mieux éviter: null.

    Mais le problème est que j'ai besoin d'avoir une colonne contenant soit un entier, soit null.
    Car si je met un zéro, cela me calculerais une perte pour une quantité de 0.
    La valeur null, me permet de pas prendre en compte le calcul.

    J'ai testé ton code, effectivement, je n'ai plus d'erreur.
    Mais je ne peux plus saisir dans la colonne concernée!

    Si tu peux m'éclaircir,
    En te remerciant

    Edit> J'ai essayé de remplacé: return Void.class; par : return Integer.class;

    J'ai l'impression, que désormais, j'ai plus de problème. J'ai bien un cadre rouge sur la saisie d'une valeur non entier.
    J'ai pas bien compris, mais ça marche!
    Il faut que je corrige le reste désormais.


    Je te remercie

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

Discussions similaires

  1. faire une recherche sur une colonne de type 'time' calculée
    Par jean-gfnet dans le forum Requêtes
    Réponses: 2
    Dernier message: 17/09/2013, 15h02
  2. Sélection sur une colonne de type LONG
    Par al1_24 dans le forum SQL
    Réponses: 4
    Dernier message: 18/07/2011, 13h03
  3. Tri ListView sur une colonne de type List<T>
    Par thelpi dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 05/01/2010, 16h46
  4. date 01/01/1900 sur une colonne de type date
    Par tsdia2 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 14/06/2008, 15h12
  5. [VB.Net/Dataview] Comment gérer un filtre sur une colonne de type date ?
    Par silatchom dans le forum Accès aux données
    Réponses: 3
    Dernier message: 07/07/2006, 19h28

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