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]Comment changer le nom des colonnes


Sujet :

Composants Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Points : 58
    Points
    58
    Par défaut [JTable]Comment changer le nom des colonnes
    Salut à tous,

    Voilà j'ai une JTable que j'ai créé avec mon propre modèle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MonModele montableModele = new MonModele(data, column); 
    // data et column sont des tableaux d'Object ==> JTable(Object[][] rowData, Object[] columnNames) 
    JTable maJTable = new JTable(montableModele );
    Ce que je voudrais faire c'est pouvoir changer la valeur du tableau columnNames après la création de ma JTable.

    Merci d'avance pour vos réponses

  2. #2
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    lu,

    A priori, il faut que tu modifies la structure qui contient le nom de tes colonnes, que tu indiques au TableModelListener qu'une entête de colonne a subi une modification.

    tu peux peut-être t'inspirer de la méthode

    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
         /**
          * Notifies all listeners that the table's structure has changed.
          * The number of columns in the table, and the names and types of
          * the new columns may be different from the previous state.
          * If the <code>JTable</code> receives this event and its
          * <code>autoCreateColumnsFromModel</code>
          * flag is set it discards any table columns that it had and reallocates
          * default columns in the order they appear in the model. This is the
          * same as calling <code>setModel(TableModel)</code> on the
          * <code>JTable</code>.
          *
          * @see TableModelEvent
          * @see EventListenerList
          */
         public void fireTableStructureChanged()
    qui se trouve dans la classe javax.swing.table.AbstractTableModel
    auteur de Awl (http://awl-wizard.sourceforge.net), librairie de développement d'assistant en Java.
    auteur de Blackdog (http://www.blackdog-project.org), lecteur/gestionnaire audio en Java.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Points : 58
    Points
    58
    Par défaut
    En fait ce que j'ai fait pour le moment c'est créer dans mon modèle un méthode setValueAt pour le tableau des noms des colonnes.
    Mais je n'arrive pas à rendre les modifications sur ces noms de colonnes effectives graphique.

  4. #4
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    un petit morceau de code a nous montrer? (si possible exécutable directement)
    auteur de Awl (http://awl-wizard.sourceforge.net), librairie de développement d'assistant en Java.
    auteur de Blackdog (http://www.blackdog-project.org), lecteur/gestionnaire audio en Java.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par xixi31
    un petit morceau de code a nous montrer? (si possible exécutable directement)
    Voilà ma méthode setValueAt et celle que j'appelle pour remplir et modifier (re-remplir) le tableau des colonnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public void setValueAt(String name, int columnIndex){
             column[columnIndex] = name;
    }
     
    // Ma méthode qui remplie le tableau des colonnes
    public void fillingColumns(String columnName){
             for (int i = 0; i < montableModele.getColumnCount(); i++){
                      montableModele.setValueAt(columnName + (i + 1), i);
             }
    }

  6. #6
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    Je comprends plus ce que tu veux faire... changer le contenu de la table ou modifier le titre des colonnes?

    Pour le premier cas, tu dois effectivement agir comme tu fais.
    Pour le deuxième cas, le nom qui est utilisé dans les entêtes de colonnes et le résultat de la méthode getColumnName(int columnIndex) sur le modèle de table
    auteur de Awl (http://awl-wizard.sourceforge.net), librairie de développement d'assistant en Java.
    auteur de Blackdog (http://www.blackdog-project.org), lecteur/gestionnaire audio en Java.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 120
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par xixi31
    Je comprends plus ce que tu veux faire... changer le contenu de la table ou modifier le titre des colonnes?

    Pour le premier cas, tu dois effectivement agir comme tu fais.
    Pour le deuxième cas, le nom qui est utilisé dans les entêtes de colonnes et le résultat de la méthode getColumnName(int columnIndex) sur le modèle de table
    Je veux modifier dynamiquement les titres des colonnes de ma JTable.

  8. #8
    Membre averti Avatar de xixi31
    Inscrit en
    Juin 2005
    Messages
    423
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2005
    Messages : 423
    Points : 414
    Points
    414
    Par défaut
    tu peux t'inspirer de ce genre de truc :

    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
     
     
        public static void main(String[] args)
        {
            JFrame frame= new JFrame();
            frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
     
            Vector columnNames = new Vector();
     
            columnNames.add("a");
            columnNames.add("b");
            columnNames.add("c");
            columnNames.add("d");
            columnNames.add("e");
     
            DefaultTableModel model = new DefaultTableModel(columnNames, 4);
            JTable table = new JTable(model);
     
            frame.setContentPane(new JScrollPane(table));
     
            frame.pack();
            frame.setVisible(true);
     
            /** j'attends un peu et je vais modifier une colonne */
            try
            {   Thread.sleep(2000); }
            catch(Exception e)
            {   e.printStackTrace(); }
     
            columnNames.removeElementAt(2);
            columnNames.add(2, "nouveau c");
     
            model.fireTableCellUpdated(TableModelEvent.HEADER_ROW, 2);
        }
    auteur de Awl (http://awl-wizard.sourceforge.net), librairie de développement d'assistant en Java.
    auteur de Blackdog (http://www.blackdog-project.org), lecteur/gestionnaire audio en Java.

  9. #9
    Futur Membre du Club
    Inscrit en
    Septembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3
    Points : 8
    Points
    8
    Par défaut Solution
    Voila mon ami !!!

    Jtable1.getColumnModel().getColumn(vColIndex).setHeaderValue("New Name");

    //et tu force le rechargement de la table pour effectuer la modification avec:

    table.getTableHeader().resizeAndRepaint();


    J'espère que c'est ce que tu cherches ... :-)


    Gastonix !!!

Discussions similaires

  1. [JTable] Comment aligner les noms des colonnes à gauche ?
    Par _LittleFlea_ dans le forum Composants
    Réponses: 5
    Dernier message: 06/11/2009, 18h14
  2. Changer les noms des colonnes de JTable
    Par lamis2009 dans le forum Composants
    Réponses: 1
    Dernier message: 16/06/2009, 17h19
  3. Comment changer le nom des FK et PK
    Par colorid dans le forum InterBase
    Réponses: 6
    Dernier message: 23/10/2007, 10h24
  4. [JTABLE] Comment changer les noms des colonnes?
    Par uzumaki_naruto dans le forum Composants
    Réponses: 2
    Dernier message: 31/03/2007, 22h57
  5. Comment récupérer le nom des colonnes ?
    Par constantin dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 07/10/2005, 12h29

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