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 :

Modifier le nom d'un entete de colonne d'une JTable


Sujet :

Composants Java

  1. #1
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut Modifier le nom d'un entete de colonne d'une JTable
    Bonsoir a tous

    J'aimerais modifier le nom d'une colonne de ma JTable...

    J'ais la valeur que je veux lui mettre a la place
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (String)tab.getValueAt(1, 2)
    Mais je ne sais pas comment faire.... Je me doute qu'il faut s'aider du JTableHeader
    J'ais essayé cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab.getTableHeader().setName((String)tab.getValueAt(1, 2));
    mais rien ne se passe... alors si quelqu'un pouvais m'aider ca serais sympas... d'avance merci
    Java c'est pas de la menthe a l'eau
    Et n'oubliez pas : Ne pas respirer tue...
    Mon BLOOOUUUG Un site trop bien

    Pour la recherche JAVA des liens pratiques :
    GOOGLE LA JAVADOC LES FAQ LES ARCHIVES

  2. #2
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Bonjour,

    Si tu utilises un DefaultTableModel, il faut appeler setColumnName().

    Si tu utilises un AbstractTableModel, il faut t'arranger pour que getColumnName ne renvoie plus la même chose, puis tu peux essayer de tenter le coup avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    super.fireTableRowsUpdated(TableModelEvent.HEADER_ROW, TableModelEvent.HEADER_ROW);
    // ou plus simple mais plus bourrin :
    super.fireTableDataChanged();
    Si tu utilises directement un TableModel, il faut construire ton TableModelEvent et l'envoyer toi-même aux TableModelListeners.
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  3. #3
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    Je suis désolé je n'ais pas bien compris ton code... Et je ne trouve pas ton exemple tres clair... Tu pourrais m'expliquer un peu plus? Ou l'adapter avec ce que j'ais deja fais??? merci d'avance
    Java c'est pas de la menthe a l'eau
    Et n'oubliez pas : Ne pas respirer tue...
    Mon BLOOOUUUG Un site trop bien

    Pour la recherche JAVA des liens pratiques :
    GOOGLE LA JAVADOC LES FAQ LES ARCHIVES

  4. #4
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    J'ais essayé ce que tu m'a dit de faire mais il ne reconnais pas

    Java c'est pas de la menthe a l'eau
    Et n'oubliez pas : Ne pas respirer tue...
    Mon BLOOOUUUG Un site trop bien

    Pour la recherche JAVA des liens pratiques :
    GOOGLE LA JAVADOC LES FAQ LES ARCHIVES

  5. #5
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Bon, ben déjà j'avais mal lu si c'est un DefaultTableModel, la méthode setColumnName n'existe pas. Il faut faire un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DefaultTableModel model = (DefaultTableModel) tab.getModel();
    Object[] columnNames = new Object[model.getColumnCount()];
    for(int i = 0; i < model.getColumnCount(); i++) {
      columnNames[i] = model.getColumnName(i)
    }
    columnNames[0] = model.getValueAt(1, 2);
    // ou tab.getValueAt(1,2), c'est exactement pareil
    model.setColumnIdentifiers(columnNames);
    Je viens de voir autre chose, mais je ne suis pas habitué à utiliser les TableColumnModel. Tu peux aussi essayer ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab.getColumnModel().getColumn(0).setHeaderValue(tab.getValueAt(1, 2));
    Pour les autres solutions, il suffit de changer les données, puis de lancer un TableModelEvent, (c'est à ça que servent les méthodes fireMachin de AbstractTableModel) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public class MonTableModel extends AbstractTableModel {
     
    ... // implémentation des méthodes abstraites
     
      public void setColumnName(int columnIndex, String name) {
        // modification des données, par exemple :
        columnNames[i] = name;
        // envoi du TableModelEvent pour actualiser l'affichage
        fireTableDataChanged();
      }
    }
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  6. #6
    Membre habitué Avatar de Spinoza23
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    328
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 328
    Points : 166
    Points
    166
    Par défaut
    Ok c'est cool, ca marche juste avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab.getColumnModel().getColumn(0).setHeaderValue(tab.getValueAt(1, 2));
    Je te remercie une fois de plus !!!
    Java c'est pas de la menthe a l'eau
    Et n'oubliez pas : Ne pas respirer tue...
    Mon BLOOOUUUG Un site trop bien

    Pour la recherche JAVA des liens pratiques :
    GOOGLE LA JAVADOC LES FAQ LES ARCHIVES

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

Discussions similaires

  1. Titres des colonnes d'une JTable ne s'affiche pas.
    Par maxlegrand dans le forum Composants
    Réponses: 2
    Dernier message: 05/06/2007, 23h24
  2. Reduire la largueur des colonnes d'une Jtable? Minimum?
    Par bendede dans le forum Composants
    Réponses: 2
    Dernier message: 20/02/2007, 13h00
  3. agrandir la seule colonne d'une jTable
    Par jdewalqu dans le forum Composants
    Réponses: 8
    Dernier message: 18/09/2006, 15h03
  4. des combos differentes dans une meme colonne d'une Jtable
    Par mickael.guilbert dans le forum Composants
    Réponses: 2
    Dernier message: 13/05/2006, 11h31
  5. Fixer les titres de colonnes d'une JTable?
    Par bygui dans le forum Composants
    Réponses: 5
    Dernier message: 13/04/2006, 13h54

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