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 :

[SWING] Comment formater une cellule d' une JTable ?


Sujet :

Composants Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 72
    Points : 57
    Points
    57
    Par défaut [SWING] Comment formater une cellule d' une JTable ?
    Bonjour,

    J'ai une JTabel contenant plusieurs colones dont une qui va contenir une liste de numéros de téléphones, un numéro par cellule.
    Le problème c'est que l'utilisateur peut y entrer n'importe quoi, même des lettres, comme étant un numéro de téléphone.

    Je voudrais formater les cellules de la colone de nuéros de téléphones comme suit
    "+xxxxxxxx"

    Où le caractère '+' est optionnel et les 'x' sont des chiffres et dont le nombre est inconnu.

    Merci d'avance pour votre aide,

    -- Hamdi

  2. #2
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    Le DefaultTableCellRenderer étend la classe JLabel, tu n'as donc qu'à créer ton TableCellRenderer et y insérer des méthodes qui effectuent le contrôle de l'entrée de l'utilisateur et rendre différemment en fonction d'une entrée correcte d'une entrée incorrecte.
    Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum

  3. #3
    Membre confirmé Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Points : 474
    Points
    474
    Par défaut
    Le cell renderer n'est là que pour l'apparence des cellules, pas pour leur édition !

    Il faut que tu implémentes ton propre cellEditor : ici j'opterai pour un JFormattedTextField avec un masque de saisie du type "+########". Après tu appelles la méthode setDefaultCellEditor( formattedTextField ) sur la colonne en question.

    Fais quelques recherches sur le net, je suis sûr que ça se trouve.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 72
    Points : 57
    Points
    57
    Par défaut
    Dans le cas où on utilise un JFormatted text comme tu le decris "+##########", le caractère '+' est - il optionnel?

  5. #5
    Membre confirmé Avatar de schniouf
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2003
    Messages : 382
    Points : 474
    Points
    474
    Par défaut
    Citation Envoyé par Hamdi Hedhili
    Dans le cas où on utilise un JFormatted text comme tu le decris "+##########", le caractère '+' est - il optionnel?
    Non il ne l'est pas, il sera affiché dans ton JFormattedTextField à l'avance. Les '#' ne seront pas affichés, ils servent simplement à dire qu'il faut qu'il y ai 10 chiffres. Il y aura un blanc à la place.
    Si tu veux remplacer ce blanc, tu peux utiliser la méthode setPlaceholderCharacter('#') de la classe MaskFormatter. L'utilisateur verra alors écrit "+##########" dans le text field, et il comprendra qu'il doit remplir le champ avec des chiffres. Le '+' ne pourra pas être effacé.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    // Il faut rajouter la gestion des exceptions !
    MaskFormatter mask = new MaskFormatter( "+##########" ) ;
    mask.setPlaceholderCharacter('#') ;
    JFormattedTextField textField = new JFormattedTextField( mask ) ;
    Plus d'infos ici : MaskFormatter

  6. #6
    Membre éclairé Avatar de Pollux
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    706
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2005
    Messages : 706
    Points : 680
    Points
    680
    Par défaut
    Désolé j'ai un peu mélanger les choses....
    Pour chaque langage existe une faq / N'oubliez pas de lire les règles du forum

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    72
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 72
    Points : 57
    Points
    57
    Par défaut
    Parfait. Merci à vous

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  3. [XL-2007] problème de codage en vba ("copie d'une partie d'une cellule dans une cellule vide")
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/10/2010, 17h01
  4. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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