JTableHeader

jc_romeo Messages postés 59 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 13 janvier 2006 - 6 juil. 2004 à 15:09
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 - 7 juil. 2004 à 13:58
Bonjour
Je voudrais savoir comment faire pour changer le nom d'une colonne d'un JTable (soit modifier la JTableHeader).
Je n'ai pas vu de set_...(String s) qui le permette.
est ce que quelqu'un pourrait me donner une solution SVP
Sinon est ce que quelqu'un s'est comment faire pour que l'on ne puisse pas manuellement redimensionner les dimensions d'une colonne ou sélectionner les tetes de colonnes (afin d'interdire de pouvoir les changer de place dans la JTable)
Merci d'avance

JC

6 réponses

wargre Messages postés 649 Date d'inscription mardi 8 juin 2004 Statut Membre Dernière intervention 9 septembre 2004 7
6 juil. 2004 à 15:50
ca c'est dans ton TableModel
0
jc_romeo Messages postés 59 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 13 janvier 2006
6 juil. 2004 à 17:09
Désolé mais dans la classe TableModel
je n'ai rien vu comme setColumnName ou quelque chose dans ce sens
(et pareil pour bloquer le fait que l'on ne puisse plus bouger la taille des colonnes ou que l'on ne puisse plus échanger 2 colonnes entre elles)
Est ce que quelqu'un pourrait m'aider SVP
Merci
JC
0
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
6 juil. 2004 à 17:32
Bonjour,
c plutôt un AbstractTableModel qu'il faudrait utilisé, où il y a un getColumnName

ex:

String[] titre = {"tata", "titi", "tutu", "toto"};

TableModel dataModel = new AbstractTableModel() {
          public int getColumnCount() { return 4; }
          public int getRowCount() { return 4;}
          public Object getValueAt(int row, int col) { return new Integer(row*col); }
          public String getColumnName(int column) {titre{column}}
      };

      JTable table = new JTable(dataModel);
      JScrollPane scrollpane = new JScrollPane(table);



Voilà, en espérant que c'est bien ca
0
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
6 juil. 2004 à 17:35
Euh, petite correction

//Définition des titres de colonne
String[] titre = {"tata", "titi", "tutu", "toto"};

TableModel dataModel = new AbstractTableModel() {
//Nombres de colonnes
public int getColumnCount() { return 4; }

//Nombres de lignes
public int getRowCount() { return 4;}

//Récupération de la valeur d'une cellule
public Object getValueAt(int row, int col) { return new Integer(row*col); }

//Récupération du titre d'une colonne
public String getColumnName(int column) {titre[column]}
};

JTable table = new JTable(dataModel);
JScrollPane scrollpane = new JScrollPane(table); //Trés important, si une JTable n'est pas dans u JScrollpane, les entêtes ne s'affichent pas
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jc_romeo Messages postés 59 Date d'inscription mercredi 9 juin 2004 Statut Membre Dernière intervention 13 janvier 2006
6 juil. 2004 à 21:55
Merci beaucoup pour ce code
c'ets une autre manière de voir les choses.
Cependant mon problème est que parfois je dois MODIFIER le titre d'une colonne (pas dans l'initialisation) et c'est cela qui me pose un gros problème. (idem pour le fait que l'on ne puisse pas redéfinir les tailles des colonnes ou le fait que l'on ne puisse pas les changer de place)
Est ce que tu aurais une solution STP
Merci d'avance
JC
0
indiana_jules Messages postés 750 Date d'inscription mardi 9 mars 2004 Statut Membre Dernière intervention 23 décembre 2008 22
7 juil. 2004 à 13:58
Bonjour,
je pense que tu devrais créer une classe qui dérive de
AbstractTableModel, où tu mettrais donc les méthodes minimum :
getColumnCount
getRowCount
getValueAt

Ensuite, la méthode getColumnName. Et enfin, une méthode à ta sauce où tu passerais en paramétre un tableau , où à la rigueur un index + un nom qui permet d'écrire dans les noms de colonnes existants et de rafraîchir l'écran

quelque chose dans ce style:

public class MyTableModel extends AbstractTableModel{
   private String[] titre;

   public MyTableModel (String[] nomColonnes) {
      titre = nomColonnes;
   }

   //Nombres de colonnes
   public int getColumnCount() { 
      return 4; 
   }

   //Nombres de lignes
   public int getRowCount() { 
      return 4;
   }

   //Récupération de la valeur d'une cellule
   public Object getValueAt(int row, int col) { 
      return new Integer(row*col); 
   }

   //Récupération du titre d'une colonne
   public String getColumnName(int column) {
      return titre[column]
   }

   //Notre méthode
   public changeColumnName(int index, String value) {
      if((index >=0) && (index < titre.length)){
         titre[index] = value;
         //Normalement, le rafraîchissement devrait se faire automatiquement, sinon, mettre un refresh, ou repaint
      }
   }
}

Voilà, en espérant que ca marche et que ca t'aide
0
Rejoignez-nous