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: Perte de l'ordre des colonnes aprés un fireTableStructureChanged


Sujet :

Composants Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 48
    Points : 33
    Points
    33
    Par défaut Jtable: Perte de l'ordre des colonnes aprés un fireTableStructureChanged
    Bonjour

    J'utilise un Jtable et l'utilisateur peux modifier l'ordre des colonnes avec la souris grace a la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @Override
    	public void columnMoved(TableColumnModelEvent e)
    de JTable.

    Mon problème est que quand mon utilisateur ajoute une colonne directement dans mon modèle et que je fais un fireTableStructureChanged() pour notifier au modèle que j'ai effectué une modification, mon ordre des colonnes est perdu est revient comme au départ.
    Existe t'il une solution pour mémoriser l'ordre des colonnes avant le fireTableStructureChanged() pour que je puisse le recharger après?

    merci par avance

  2. #2
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Bonjour,

    tout cela se passe au niveau du TableColumnModel de la JTable.

    Tu peux faire un setAutoCreateColumnsFromModel(false) sur ta table après l'initialisation.
    Cela devrait avoir pour effet d'ignorer l'ajout/suppression de colonnes.

    Pour pallier à cela, tu peux alors hériter de JTable pour redéfinir la méthode tableChanged. A cet endroit, tu scannes ton model pour voir si de nouvelles colonnes sont arrivées. Si c'est le cas, tu appelles la méthode addColumn.

    Note 1: il faut aussi penser à gérer la suppression de colonnes.
    Note 2: il ne faut pas oublier d'appeler la méthode tableChanged de JTable dans ta redéfinition, sinon, tu risques de dégrader le comportement.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Janvier 2013
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 48
    Points : 33
    Points
    33
    Par défaut
    Ok merci de ta réponse

    Cela fonctionne bien quand j'ajoute une colonne.
    Cela fonctionne aussi très bien quand je supprime la dernière colonne.

    Par contre je n'arrive pas a supprimer une colonne à un index donné...

    Par étape:
    -Je supprime la colonne de mon Arraylist qui est utilisé par mon tableModel
    -J'effectue un FireTableStuctureChanged
    -Dans la méthode tableChanged je compare le nombre de colonne de mon tableModel et de l'ancienne valeur mémorisé
    Si elle est inférieur je supprime la colone avec removeColumn de jtable (l'index de la colonne a supprimer est lui aussi connu)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    @Override
    	public void tableChanged(TableModelEvent arg0) {
    		if (columnCount == 0)
    			columnCount = getModel().getColumnCount();
    		if (columnCount < getModel().getColumnCount()) {
    			addColumn(new TableColumn(getModel().getColumnCount() - 1));
    			columnCount = getModel().getColumnCount();
     
    		} else if (columnCount > getModel().getColumnCount())
    			removeColumn(getColumnModel().getColumn(this.colToRemoved));
     
    		super.tableChanged(arg0);
    	}

Discussions similaires

  1. ordre des colonnes après un alter table add
    Par Etienne5685 dans le forum Développement
    Réponses: 2
    Dernier message: 30/05/2011, 18h21
  2. JTable. largeur des colonnes apres MAJ de la table
    Par step31 dans le forum Composants
    Réponses: 4
    Dernier message: 17/09/2008, 18h57
  3. [C#] ordre des colonnes dans un datagrid
    Par enfants dans le forum Windows Forms
    Réponses: 7
    Dernier message: 10/06/2006, 01h35
  4. Ordre des Colonnes d'une requête
    Par dlh1222 dans le forum Access
    Réponses: 4
    Dernier message: 14/09/2005, 23h43
  5. Rajout colonne - changer l'ordre des colonnes ?
    Par Coptere dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/09/2005, 10h56

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