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

SWT/JFace Java Discussion :

Tableviewer(JFACE) avec nombre de colonnes variable


Sujet :

SWT/JFace Java

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    �tudiant
    Inscrit en
    Juillet 2017
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 4
    Par d�faut Tableviewer(JFACE) avec nombre de colonnes variable
    Bonjour,

    Qui a une id�e sur comment faire un Tableviewer avec nombre de colonnes variable ? J'ai cherch� partout mais je n'ai rien trouv�. Ce que je veux faire est afficher dans un TableViewer une liste de valeurs qui a une taille variable.

    Merci.

  2. #2
    Mod�rateur
    Avatar de joel.drigo
    Homme Profil pro
    Ing�nieur R&D - D�veloppeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur R&D - D�veloppeur Java
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par d�faut
    Salut,

    Est-ce que le nombre de colonnes varie lorsque le TableViewer est affich� (on peut ajouter ou supprimer des colonnes), est-ce que le nombre de colonnes est diff�rent pour chaque �l�ment, ou est-il simplement diff�rent (mais le m�me pour tous les �lements) � la construction du TableViewer ? Ou peut-�tre le besoin est-il simplement de pouvoir cacher/afficher des colonnes (comme on fait dans l'Explorer de Windows par exemple) ?

    Question subsidiaire : le TableViewer est-il layout� par un TableColumnLayout ?

    Avant de d�crire le principe, note qu'il existe un composant tr�s puissant, appel� NatTable qui permet de faire plus ou moins ce qu'on ferait avec Excel, qui donc pourrait permettre plus facilement de faire une table avec nombre de colonnes variables.

    Pour le TableViewer, ke vais d�crire le principe au cas simple : un nombre diff�rent de colonnes � la construction, mais fixe ensuite. Le principe de base reste applicable, mais il faudra �ventuellement g�rer par �v�nement l'impact des variations, pour rafra�chir le TableViewer (display et layout).

    La gestion du nombre de colonnes passe par 2 �l�ments essentiellement :

    • Le LabelProvider qui permet au TableViewer de conna�tre les valeurs � afficher pour chaque cellule, ou les styles �ventuellement (on peut utiliser aussi des CellLabelProvider, mais le principe de base est le m�me ) ;
    • Les TableColumn qui constituent les d�finitions de colonnes


    Pour le LabelProvider, c'est simple, il suffit de g�rer les index par rapport � un mod�le qui tient compte de la variabilit�.

    On a 2 m�thodes (ou 3 m�thodes si on impl�mente ITableValueProvider, voire plus si on veut g�rer du style, mais le principe est le m�me pour toutes les m�thodes) dans ITableLabelProvider. La m�thode getColumnText(Object element, int columnIndex) pour donner le texte � afficher pour une cellule, et le pendant getColumnImage()

    Par exemple, pour getColumnText, et le cas static, on pourra faire quelque chose comme �a :
    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
     
            @Override
    	public String getColumnText(Object element, int columnIndex) {
    		String text = null;
    		if ( element instanceof MachinTruc ) {
    			MachinTruc machinTruc = (MachinTruc)element;
    			switch (columnIndex) {
    			case 0:
    				text = machinTruc.getXxx();
    				break;
    			case 1:
    				text = machinTruc.getYyy();
    				break;
                            // etc...
    			default:
    				break;
    			}
    		}
    		return text;
    	}
    Avec un nombre de colonnes variables, on a un nombre de "columnIndex" non fixe. On pourra g�rer �a par exemple avec une classe qui permet de connaitre pour un type d'objet donn�, la valeur correspondant � l'index. Tous les index en dehors de l'intervalle donneront simplement une valeur nulle.

    Dans le cas g�n�ral, on peut faire une classe qui d�finit les colonnes d'un objet qui aura donc une m�thode du genre :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    public String getText(T element, int index) {
            // code
    }
    Dans le LabelProvider, on aura plut�t :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @Override
    	public String getColumnText(Object element, int columnIndex) {
    		String text = null;
                    ColumnManager columnManager = getColumnManager( element ); // on détermine le composant permettant de connaître les valeurs de l'élément pour chaque index (par exemple, en utilisant une Map<Class<?>, ColumnManager>)
                    if ( columnManager == null ) {
                         text = null;
                    }
                    else {
                         text = columnManager.get(columnManager.toType(element), columnIndex); // on délègue l'obtention des valeurs au composant
                    }
    		return text;
    	}
    Par exemple, on peut faire une classe abstraite avec cette m�thode abstraite et impl�menter chaque cas concret par un switch comme ci-dessus, on faire une classe "configurable" qui a une List de d�finition de colonnes.
    Ainsi, le LabelProvider va juste d�l�guer l'obtention de la bonne valeur � un composant qui saura combien de colonnes il faut afficher pour un �l�ment donn�.

    Le second aspect est la cr�ation des TableColumn. Si d'habitude on cr�e les TableColumn avec soit une boucle, soit une s�quence d'appels qui font, en r�sum�, un new TableColumn(...), pour le cas simple il faudra simplement pouvoir conna�tre le nombre maximum de colonnes, et d�terminer les configurations de chacune dynamiquement et utiliser une boucle pour les construire.

    Par extension, pour faire varier le nombre de colonnes en cours d'affichage, on utilisera des new TableColumn() pour cr�er des colonnes, des dispose() sur les instances des TableColumn pour les supprimer, et �ventuellement agir sur les index des colonnes � droite de la nouvelle colonne ou de la colonne supprim�e. Puis faire tout ce qui faut pour rafra�chir les diff�rents composant (comme le TableColumnLayout par exemple).
    L'expression "�a marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le probl�me.
    La plupart des r�ponses � vos questions sont d�j� dans les FAQs ou les Tutoriels, ou peut-�tre dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement pos�e et r�dig�e et vous aurez plus de chances de r�ponses adapt�es et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'�diteur de messages).
    Nouveau sur le forum ? Consultez Les R�gles du Club.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    �tudiant
    Inscrit en
    Juillet 2017
    Messages
    4
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    �ge : 30
    Localisation : Maroc

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 4
    Par d�faut
    en faite ce que je veux exactement c est par exemple si j ai une classe qui contient une liste de voiture avec leurs donn�es differentes je veux dans une autre classe qui contient une table avec les noms des voitures et a chaque fois quand je clique sur un nom il m'affiche une table qui contient dans les noms d colonnes les donn�es du voiture et dans chaque colonne les valeurs de ces donn�es

  4. #4
    Mod�rateur
    Avatar de joel.drigo
    Homme Profil pro
    Ing�nieur R&D - D�veloppeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur R&D - D�veloppeur Java
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par d�faut
    Le nombre de donn�es de chaque voiture est diff�rents c'est �a ? Et la table qui affiche ces donn�es est toujours visibles, donc tu voudrais pouvoir mettre � jour la table � chaque s�lection d'une nouvelle voiture, en r�sum�. Et bien, si c'est bien �a, c'est bien le sens de ma r�ponse (mais en r�sum� �a pourrait �tre tout simplement recr�er la table � chaque nouvelle s�lection, comme dans le cas standard).

    Cependant, je pense qu'il serait beaucoup plus pratique, et mieux adapt� � ce que tu veux faire, d'utiliser une Property View, surtout si tu es dans le cadre d'une application RCP. C'est dynamique, flexible, �a g�re �galement les arbres, et c'est plut�t simple � mettre en place.
    L'expression "�a marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le probl�me.
    La plupart des r�ponses � vos questions sont d�j� dans les FAQs ou les Tutoriels, ou peut-�tre dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement pos�e et r�dig�e et vous aurez plus de chances de r�ponses adapt�es et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'�diteur de messages).
    Nouveau sur le forum ? Consultez Les R�gles du Club.

Discussions similaires

  1. Table avec nombre de colonnes variable
    Par satanas313 dans le forum D�veloppement
    R�ponses: 6
    Dernier message: 21/05/2010, 15h07
  2. Somme d'une colonne (avec nombre de rang�e variable)
    Par Berny77 dans le forum Macros et VBA Excel
    R�ponses: 3
    Dernier message: 13/05/2008, 23h30
  3. Tableau avec un nombre de colonne variable
    Par HoB dans le forum VBScript
    R�ponses: 12
    Dernier message: 17/01/2008, 11h06
  4. Affichage avec un nombre de colonnes variable
    Par sebaaas dans le forum G�n�ral JavaScript
    R�ponses: 4
    Dernier message: 04/10/2007, 19h53
  5. SELECT avec un nombre de colonnes variable
    Par sorcer1 dans le forum MS SQL Server
    R�ponses: 7
    Dernier message: 24/09/2007, 21h58

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