Partage
  • Partager sur Facebook
  • Partager sur Twitter

JTable : contrôle de valeur avec un DefaultTableModel

    25 mai 2011 à 18:16:22

    Bonjour à tous !

    Après avoir passé des heures à chercher une solution sur internet et à tester différentes techniques, je me décide à vous demander votre aide.

    Je m'explique. J'ai un programme Java contenant une JTable dont le modèle a été redéfini avec un DefaultTableModel. Je dois contrôler la ou les valeurs saisies par l'utilisateur dans une colonne en particulier.

    J'ai pensé tout d'abord définir un JFormattedTextField comme CellEditor des cellules de ma colonne. Le problème est que la méthode fireTableCellUpdated qui applique le traitement s'exécute avant le contrôle de valeur du champ texte.

    L'autre solution consiste à redéfinir la méthode setValueAt de mon modèle mais le problème est le suivant : mon modèle ne contient pas le tableau des données car ma JTable est de taille variable. Je ne peux donc pas faire ceci :

    public void setValueAt(Object value, int row, int column) {
        //Vérification de la valeur saisie
       
        //Si la valeur est correcte :
        data[row][column] = value;
    
        fireTableCellUpdated(row,column);
    }
    


    car si je dois déclarer mon tableau "data" pour cela mais je ne connais pas sa taille avant le lancement du programme.

    J'ai également essayé de changer mon modèle pour un AbstractTableModel mais dans ce cas je perds mes méthodes d'ajout, d'insertion et de suppression de lignes.

    Peut-être que je n'ai pas bien compris le principe des modèles pour les JTable et la solution est simple mais je ne la trouve pas et cela fait déjà plusieurs jours que je planche dessus...

    Merci d'avance à ceux qui auront le courage de lire ce message en entier :D et j'espère avoir été clair.
    • Partager sur Facebook
    • Partager sur Twitter
      27 mai 2011 à 11:08:15

      Bon je vois que mon sujet n'attire pas les foules :p

      Pour faire bref, je dois contrôler une valeur saisie dans une JTable avant que la méthode fireTableCellUpdated soit exécutée.

      Si quelqu'un a une idée ?

      Merci.
      • Partager sur Facebook
      • Partager sur Twitter
        27 mai 2011 à 11:42:10

        Pourquoi est-ce que tu n'essaie pas de surcharger la méthode fireTableCellUpdated pour faire ton contrôle dans le corps de cette méthode?
        • Partager sur Facebook
        • Partager sur Twitter
          27 mai 2011 à 13:56:15

          En fait j'ai déjà essayé.

          Je vérifie ma valeur dans la méthode firetableCellUpdated et si elle n'est pas correcte je redonne le focus à la cellule le problème c'est qu'en remattant la cellule en mode "édition" cela me renvoie une exception de type stackOverflow, peut-être parce qu'en faisant ainsi cela ré-exécute le setValueAt et ainsi le fireTableCellUpdated (donc boucle infinie...) ?
          • Partager sur Facebook
          • Partager sur Twitter

          JTable : contrôle de valeur avec un DefaultTableModel

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown