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][JTable]Gérer l'édition


Sujet :

Composants Java

  1. #1
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut [Swing][JTable]Gérer l'édition
    Bonjour,

    j'ai actuellement un JXTable qui affiche des données depuis une base de données, et j'aimerais maintenant pouvoir modifier des choses directement depuis la JXTable. J'ai donc rendu certaines colonnes éditables depuis mon modèle, mais le problème c'est que même en cliquand sur ENTER rien ne se passe. Donc ma première question est comment faire pour pouvoir modifier des données directement dans la JXTable ? Et ma deuxième question, c'est comment pouvoir gérer cette édition ensuite pour que je puisse insérer cette valeur dans la base de données ? C'est à dire qu'à chaque édition j'aimerais pouvoir récupérer la ligne, la colonne et la nouvelle valeur.

    Merci beaucoup

  2. #2
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    A priori ça fleure bon le tableModelListener (de toute façon ce sera comme pour une JTable normale), mais là sur le moment je ne saurais trop me prononcer vu la gueule de bois que je tiens

  3. #3
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par sinok
    A priori ça fleure bon le tableModelListener (de toute façon ce sera comme pour une JTable normale), mais là sur le moment je ne saurais trop me prononcer vu la gueule de bois que je tiens


    Ca voudrait dire que mon modèle devrait implémenter tableModelListener ?

  4. #4
    Membre averti Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Points : 409
    Points
    409
    Par défaut
    J'ai été confronté à ce problème, la seule solution que j'ai trouvé:
    -modification des donnée d'une ligne par l'utilisateur
    -l'utilisateur valide sa modification grâce à un bouton
    -enregistrement de la ligne sélectionner et de sa clé primaire
    -envoie à la base la suppression de la ligne ou sa modif, par rapport à sa clé primaire

    Si il y a une autre solution, je suis preneur, j'avais pas demandé sur le forum à ce temps là car j'en demandais déjà trop

  5. #5
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par nicotine002
    J'ai été confronté à ce problème, la seule solution que j'ai trouvé:
    -modification des donnée d'une ligne par l'utilisateur
    -l'utilisateur valide sa modification grâce à un bouton
    -enregistrement de la ligne sélectionner et de sa clé primaire
    -envoie à la base la suppression de la ligne ou sa modif, par rapport à sa clé primaire

    Si il y a une autre solution, je suis preneur, j'avais pas demandé sur le forum à ce temps là car j'en demandais déjà trop
    Ca c'est bon, il peut déja le faire par interfaces graphiques, via un bouton et une fenêtre, il y a pas de problèmes

    J'aimerais juste rendre possible la modification directement depuis la JXTable

  6. #6
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Personne n'a d'idées ?

    Si on peut rendre la JTable éditable, c'est quand même bien parce que ca doit marcher non ?

  7. #7
    Membre averti Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Points : 409
    Points
    409
    Par défaut
    Mais quand tu modifie une celulle et que tu clique sut entrée, la celulle(pas la base) est bien modifiée?

  8. #8
    Membre régulier Avatar de zoullou
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 130
    Points : 103
    Points
    103
    Par défaut
    Je pense que ceci répondra à tes attentes :

    http://java.sun.com/docs/books/tutor...ml#modelchange


  9. #9
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par nicotine002
    Mais quand tu modifie une celulle et que tu clique sut entrée, la celulle(pas la base) est bien modifiée?
    Ben non, justement pas... Ca revient à la valeur précédente que je clique sur enter

  10. #10
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par zoullou
    Je pense que ceci répondra à tes attentes :

    http://java.sun.com/docs/books/tutor...ml#modelchange

    Je vais aller voir là-bas

  11. #11
    Membre averti Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Points : 409
    Points
    409
    Par défaut
    Bizarre je viens encore de regarder dans un de mes soft et ca le fait pas(en utilisant un AbstractTableModel)

  12. #12
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Points : 61
    Points
    61
    Par défaut
    Bonjour...

    J'ai le meme pb a priori... (voir ma discussion : http://www.developpez.net/forums/sho...d.php?t=143197 ).

  13. #13
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Citation Envoyé par nicotine002
    Bizarre je viens encore de regarder dans un de mes soft et ca le fait pas(en utilisant un AbstractTableModel)
    Chez toi ce qui est dans l'affichage tu peut directement modifier sans problème sans avoir défini un tableModelListener ?

  14. #14
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Je viens d'essayer en faisant que mon modele implémente TableModelListener et en définissant la méthode tableChanged, il ne passe jamais dans la méthode et après une édition, même si je clique sur enter, rien ne change, ca revient comme avant

  15. #15
    Membre averti Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Points : 409
    Points
    409
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Chez toi ce qui est dans l'affichage tu peut directement modifier sans problème sans avoir défini un tableModelListener ?
    Oui, enfin si je comprend ce que tu veux faire
    Voici le code de mon model si ça peut t'aider:
    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
     
    class ModelTable6 extends AbstractTableModel{
     
        /**
         * 
         */
     
        int nbl=0;
        boolean edit=false;
     
        public ModelTable6(int nb,boolean edit){
     
        this.edit=edit;    
        nbl=nb;
     
        }            
     
        Object[][] rowData =new String[100][2];
     
        public String getColumnName(int col) {
     
            String columnNames[] = {"Numéro","Nom"};
     
            return columnNames[col].toString();
     
        }
        public int getRowCount() { 
     
     
        return nbl; 
     
        }
     
        public int getColumnCount() { return 2; }
     
        public Object getValueAt(int row, int col) {
     
            return rowData[row][col]; 
     
        }
     
        public boolean isCellEditable(int row, int col){ return edit; }
     
        public void setValueAt(Object value, int row, int col) {
     
               rowData[row][col] = value;
     
            fireTableCellUpdated(row, col);
     
        }
     
     
     
    }

  16. #16
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Mon modèle est presque le même que le tien pourtant

    Je sais pas d'ou ca peut venir...

  17. #17
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Points : 61
    Points
    61
    Par défaut
    Donc...

    Moi aussi j'ai le meme pb. J'ai aussi mon tableModel pratiquement identique au tiens nicotine002 ... et pourtant !!! Ca ne marche pas non plus ???


    Il me manquait le fireTableCellChanged dans le setValueAt... Je l'ai rajouté, mais aucune différence !!!

  18. #18
    Membre averti Avatar de nicotine002
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    577
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 577
    Points : 409
    Points
    409
    Par défaut
    C'est vraiment bizarre, c'est la premiere fois que ca vous arrive où ca l'a tout le temps fait?car moi même en essayant avec le plus petit code(JTable tab = new JTabme(mod)), ca fonctionne.

  19. #19
    Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    113
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 113
    Points : 61
    Points
    61
    Par défaut
    C'est la premiere fois... Et pour cause je débute depuis peu dans le monde de Java (pas facile l'entree en matiere!!!).

    je vais continuer mes tests...

  20. #20
    Expert éminent sénior
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Points : 21 324
    Points
    21 324
    Par défaut
    Je sais pas si ca peut aider quelqu'un à résoudre le problème, mais je vous mets le code de mon modèle et celui de l'endroit ou j'initialise ma JXTable

    Mon modèle (il ne semble rien avoir de spécial)

    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
    
    public class MyModel extends AbstractTableModel implements TableModelListener{
    
    //Variables private String[] headers = null; private Object[][] data = new Object[0][0];
    public MyModel(){
    super(); this.addTableModelListener(this);
    }
    public Object getValueAt(int row, int column) {
    return data[row][column];
    } public void setHeader(String[] newHeaders){
    headers = newHeaders;
    } public int getColumnCount() {
    return headers.length;
    } public String getColumnName(int column) {
    return headers[column];
    } public int getRowCount() {
    return data.length;
    } public boolean isCellEditable(int row, int column) {
    if(column == 1 || column == 4 || column == 9)return true;
    return false;
    } public void setData(Object[][] newData){
    data = newData; super.fireTableDataChanged();
    } public void setData(ArrayList<Object[]> newData){
    Object[][] data = new Object[newData.size()][]; for(byte i = 0; i < newData.size(); i++){
    data[i] = newData.get(i);
    } this.data = data; super.fireTableDataChanged();
    } public void tableChanged(TableModelEvent event) {
    System.out.println(event.getColumn());
    }
    }
    Initialisation de la JXTable :

    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
    
    filmsTable = new JXTable(model);
    filmsTable.setPreferredScrollableViewportSize(tableDimension);
    filmsTable.getTableHeader().setReorderingAllowed(false);
    filmsTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    filmsTable.setColumnControlVisible(true);
    filmsTable.getColumnExt("Id").setVisible(false);
    
    filmsTable.addMouseListener(new MouseAdapter(){
    public void mouseClicked(MouseEvent e){ if(e.getClickCount() == 2){
    new GuiFiche((Integer)filmsTable.getModel() .getValueAt(filmsTable.getSelectedRow(),0)).setVisible(true);
    }
    } });
    P.S. J'ai déja essayé de la remplacer par une JTable et ca ne change rien... Je sais vraiment pas ce que j'ai oublié

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Swing]JTable- Dimensionner les colonnes
    Par loutfi dans le forum Composants
    Réponses: 12
    Dernier message: 01/07/2011, 08h50
  2. [Swing / JTable] Rendre les cellules d'un JTable non éditables
    Par Jérôme_20 dans le forum Composants
    Réponses: 20
    Dernier message: 10/02/2011, 10h32
  3. [Swing]Jtable édition
    Par Lethal dans le forum Composants
    Réponses: 5
    Dernier message: 06/03/2006, 17h18
  4. [Debutant][Swing][Jtable]Peut-on avoir 2 forecolor ?
    Par britou dans le forum Composants
    Réponses: 7
    Dernier message: 14/05/2004, 15h03
  5. [SWING]jTable + Focus
    Par chady dans le forum Composants
    Réponses: 5
    Dernier message: 27/02/2003, 14h51

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