JTable - Interdire déplacement colonne

bentak Messages postés 1 Date d'inscription samedi 13 mai 2006 Statut Membre Dernière intervention 13 mai 2006 - 13 mai 2006 à 16:18
sauvageor Messages postés 7 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 14 mars 2007 - 29 mai 2006 à 18:15
Bon, j'ai besoin de votre aide je galère comme un fou.

J'ai une JTable ou se trouve des données prises d'une BDD. L'utilisateur peut sélectionner une ligne et je dois afficher une réponse en fonction d'une case de cette ligne sélectionnée.

Mon pb est le suivant :

Si l'utilisateur déplace une colonne je ne sait plus en quelle position la colonne nom qui m'intéresse se trouve.

Il me faudrait donc une solution pour détecter le mouvement d'une colonne ou pour interdire le déplacement d'une colonne et je ne trouve pas.

HELP!!!

PS : pour detecter mvt colonne j'ai essayé ca mais ca ne marche pas :

...
table.getColumnModel().addColumnModelListener(new javax.swing.event.TableColumnModelListener() {
public void columnMoved(javax.swing.event.TableColumnModelEvent e){
tableColumnMoved(e);
}
});

3 réponses

sauvageor Messages postés 7 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 14 mars 2007
29 mai 2006 à 18:13
Bonjour,

voici le code pour recuperer les colonnes

/** Récupere l'ordre des colonnes sous la forme "2,0,1"
    *  Donne l'ordre courant par rapport à l'ordre d'origine de la TableModel
    *  @return Ordre courant des colonnes (ex: "2,0,1")
    **/
   public static String getTableOrder(JTable table)
   {  String Result = "";
      int nbrColumns = table.getColumnCount();

      for(int i  = 0 ; i < nbrColumns ; i++)
      {  int realColumn = table.getColumnModel().getColumn(i).getModelIndex();
                 
         Result += realColumn;
         if(i < nbrColumns - 1) Result +=",";
      }
      return Result;
   }

Exoformations
0
sauvageor Messages postés 7 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 14 mars 2007
29 mai 2006 à 18:14
bonjour,

l'inverce

 public static void setTableOrder(String order,JTable table)
   { 
      ArrayList expected = makeOrderList(order);
      ArrayList having   = makeOrderList( getTableOrder(table) );
   
      for(int i = 0 ; i < table.getColumnCount() ; i++)
      {
        Integer valExpected = (Integer)expected.get(i);
        Integer valHaving   = (Integer)having.get(0);
         
        if( valExpected.intValue() == valHaving.intValue() )
        { having.remove(0);
          continue;
        }

        int posExpectedOnCurrent = having.indexOf(valExpected);
         
        System.out.println("Move column " + (posExpectedOnCurrent + i) + " to " + i);
        having.remove(posExpectedOnCurrent);
       
        table.moveColumn( posExpectedOnCurrent + i , i );
      }
    }

Exoformations
0
sauvageor Messages postés 7 Date d'inscription vendredi 1 novembre 2002 Statut Membre Dernière intervention 14 mars 2007
29 mai 2006 à 18:15
Bonjour,

le tous dans une classe et une variable
que tu stocke 

Exoformations
0
Rejoignez-nous