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 :

[JTable] Impossible d'éditer


Sujet :

Composants Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 48
    Points : 51
    Points
    51
    Par défaut [JTable] Impossible d'éditer
    Bonjour à tous,

    J'arrive à éditer les cellules, mais le texte disparaît des que je passe a la suivante, est-ce du par ma boucle des "" vous pensez?

    Pourtant j'ai bien renseigné isCellEditable.

    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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
     
     
    import graph.menuGestionArt.*;
    import dev.Article;
    import dev.Client;
    import dev.Facture;
    import dev.FamArticle;
    import dev.G_Article;
    import dev.G_FamArticle;
    import dev.Societe;
    import java.awt.Dimension;
    import java.util.ArrayList;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.AbstractTableModel;
     
    public class ListeFactLibre extends JPanel {
        //
     
        private ModelListArt unMod;
        private JTable table;
        private JScrollPane scrollPane;
        //
        private Societe uneSoc;
        private Facture uneFact;
     
        public ListeFactLibre(Societe _uneSoc) {
            uneSoc = _uneSoc;
            init();
     
        }
     
        public ListeFactLibre(Societe _uneSoc, Facture _uneFact) {
            uneSoc = _uneSoc;
            init();
            //Boucle pour afficher 15 ligne vide (à remplir par l'utilisateur par l'interface graphique)
            for (int i = 0; i < 15; i++) {
                unMod.addData("");
            }
     
        }
     
        public void init() {
            //Liste Facture
            unMod = new ModelListArt();
            table = new JTable(getUnMod());
     
            table.setPreferredScrollableViewportSize(new Dimension(800, 400));
            table.setFillsViewportHeight(true);
            table.setAutoCreateRowSorter(true);
     
            scrollPane = new JScrollPane(getTable());
            add(scrollPane);
        }
     
        /**
         * @return the unMod
         */
        public ModelListArt getUnMod() {
            return unMod;
        }
     
        /**
         * @param unMod the unMod to set
         */
        public void setUnMod(ModelListArt unMod) {
            this.unMod = unMod;
        }
     
        /**
         * @return the table
         */
        public JTable getTable() {
            return table;
        }
     
        /**
         * @param table the table to set
         */
        public void setTable(JTable table) {
            this.table = table;
        }
     
        class ModelListArt extends AbstractTableModel {
     
            private String[] columnNames = {"Quantité", "Type", "P.U", "Total"};
            private ArrayList<String> data = new ArrayList<String>();
     
            public int getColumnCount() {
                return columnNames.length;
            }
     
            public void addData(String unString) {
                data.add(unString);
            }
     
            public int getRowCount() {
                return data.size();
            }
     
            public String getColumnName(int col) {
                return columnNames[col];
            }
     
            public boolean isCellEditable(int row, int col) {
                return true;
     
            }
     
            public Object getValueAt(int rowIndex, int columnIndex) {
     
                if (columnIndex == 0) {
                    return data.get(rowIndex);
                } else if (columnIndex == 1) {
                    return data.get(rowIndex);
                } else if (columnIndex == 2) {
                    return data.get(rowIndex);
                } else if (columnIndex == 3) {
                    return data.get(rowIndex);
                } else {
                    return null;
                }
            }
        }
    }

  2. #2
    Membre éprouvé Avatar de fraco
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 750
    Points : 934
    Points
    934
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    public Object getValueAt(int rowIndex, int columnIndex) { 
                if (columnIndex == 0) {
                    return data.get(rowIndex);
                } else if (columnIndex == 1) {
                    return data.get(rowIndex);
                } else if (columnIndex == 2) {
                    return data.get(rowIndex);
                } else if (columnIndex == 3) {
                    return data.get(rowIndex);
                } else {
                    return null;
                }
            }
        }
    je crois que le problème vient de là : dans tous les cas on finit par atterrir dans return null;
    ce serait plus simple comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public Object getValueAt(int rowIndex, int columnIndex) { 
                if (columnIndex < 4) {
                	return data.get(rowIndex);
                } else {
                    return null;
                }
            }
        }
    à tester...

  3. #3
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,



    Tu n'as pas implémenté la méthode setValueAt() dans ton modèle, donc les données ne peuvent pas y être enregistrer...

    De plus ton modèle est bizarre puisque dans getValueAt() tu renvoi la même chose pour toutes les colonnes de la ligne !?!?


    Plutôt qu'utiliser des Strings dans ton modèle, il sera préférable d'utiliser un type plus concret, par exemple des "Produits"...


    a++

  4. #4
    Membre confirmé Avatar de javaNavCha
    Homme Profil pro
    EKG Group
    Inscrit en
    Juillet 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : EKG Group
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2009
    Messages : 311
    Points : 631
    Points
    631
    On essaie
    et ça marchera

    Mon site
    Ma page

Discussions similaires

  1. [JTable] Impossible de modifier les cellules
    Par rtg57 dans le forum Composants
    Réponses: 3
    Dernier message: 04/03/2010, 13h06
  2. Impossible d'éditer une cellule
    Par ekke dans le forum Développement
    Réponses: 2
    Dernier message: 21/05/2008, 09h45
  3. JTable impossible de mettre des titres de colonnes !
    Par isma92 dans le forum Composants
    Réponses: 3
    Dernier message: 20/12/2007, 20h46
  4. [Interbase 5] impossible d'éditer les données
    Par inconu dans le forum InterBase
    Réponses: 4
    Dernier message: 18/08/2005, 13h10

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