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] Problème redimensionnement à l'insertion d'une nouvelle ligne


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Goupo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 505
    Par défaut [JTable] Problème redimensionnement à l'insertion d'une nouvelle ligne
    Salut à tous,

    J'ai 2 JTable qui contiennent des lignes (comme des JTables ) et j'ai 2 boutons qui permettent de faire passer les lignes d'un JTable à l'autre. Ca marche mais il y a un problème : Lorsque le nombre de ligne devient supérieur au nombre de lignes initial, le JTable n'est pas assez grand pour afficher les lignes supplémentaires.

    J'ai essayé de redéfinir le model avec setModel(), j'ai essayé le repaint() aussi... Mais ça ne fonctionne pas.

    Comment dire au JTable de se redimensionner de manière à voir toutes ses lignes?

    Voilà la fonction qui permet de passer une ligne d'un JTable à l'autre :
    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
    /**
         * Transfère une application de la liste des applications 
         * à la liste des applications de l'utilisateur
         */
        private void ajouteApplication() {
            int selectedRow = tableToutesApplications.getSelectedRow();
            if (selectedRow >= 0) {
                //Récupérer la ligne sélectionnée dans TtesApp
                String[] row = modelToutesApplications.getRow(selectedRow);
     
                //Ajouter la ligne dans UsersApp
                modelUsersApplications.addRow(row);
                tableUsersApplications.repaint();
     
                //Retirer la ligne dans TtesApp
                modelToutesApplications.removeRow(selectedRow);
                tableToutesApplications.repaint();
            }
        }

  2. #2
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Normalement c'est au modèle de signaler la modification via le bon événement TableModelEvent.
    Typiquement dans un AbstractTableModel il faut appeler fireTableStructureChanged().

    Ce n'est pas un problème d'affichage mais un problème de mise à jour du modèle, les repaint() n'y changeront rein.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 277
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 277
    Par défaut
    Si c'est juste un ajout ou une suppression de ligne les méthodes suivantes feront l'affaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    void 	fireTableRowsDeleted(int firstRow, int lastRow) 
     
    void 	fireTableRowsInserted(int firstRow, int lastRow)

  4. #4
    Membre éclairé Avatar de Goupo
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2006
    Messages
    505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2006
    Messages : 505
    Par défaut
    Ok, merci. Voilà mon TableModel.


    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
    /*
     * To change this template, choose Tools | Templates
     * and open the template in the editor.
     */
     
    package demoabstracttablemodel;
     
    import java.util.Vector;
    import javax.swing.table.AbstractTableModel;
     
    /**
     *
     * @author xxx
     */
    public class MyTableModel extends AbstractTableModel {
     
        private String[] fields = {"Nom", "Prénom", "Age"};
        private Vector data;
     
        public MyTableModel () {
            String[] moi = {"Pogo", "Pogo", "20"};
            String[] luke = {"LUCKY", "Luke", "Unknown"};
            String[] micheal = {"MICHAEL", "Angelo", "4"};
     
            data = new Vector();
            data.add(moi);
            data.add(luke);
            data.add(micheal);
     
        }
     
        public int getRowCount() {
            return this.data.size();
        }
     
        public void addRow(String[] row) {
            data.add(row);
            fireTableRowsInserted(0, getRowCount());
        }
     
        @Override
        public String getColumnName(int columnIndex) {
            return fields[columnIndex];
        }
     
        public int getColumnCount() {
            return this.fields.length;
        }
     
        public Object getValueAt(int rowIndex, int columnIndex) {
            String[] row = (String[])data.get(rowIndex);
            return row[columnIndex];
        }
    }

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

Discussions similaires

  1. Insertion d'une nouvelle ligne
    Par Doustik dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 02/06/2010, 15h55
  2. Insertion d'une nouvelle ligne dans la table
    Par boby15000 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 20/05/2008, 18h49
  3. [C# .NET2.0][MySQL] Insertion d'une nouvelle ligne via un dataset
    Par bodygard dans le forum Accès aux données
    Réponses: 1
    Dernier message: 16/05/2007, 13h22
  4. Réponses: 18
    Dernier message: 26/07/2006, 15h51
  5. Problème avec l'insertion d'une image dans JPanel
    Par anutka dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 16/03/2006, 11h02

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