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 :

Tree get Items


Sujet :

SWT/JFace Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 16
    Par défaut Tree get Items
    Bonjour à tous,

    J'essaye de réaliser un arbre en SWT et je bloque sur la fonction getItems.

    Le but de mon application est de pouvoir afficher dans l'arbre des pays, et pour chacun de ces pays des régions, et pour chacune de ces régions des Appellations. Mes données sont dans une base de données MySQL.

    Voici mon code pour le remplissage de mon arbre :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     
     
    public void peupler_tree() {
     
    		///TREE VIEWER/////////////////////////////////////////////
     
    		String requettePays = "SELECT DISTINCT pays from region" ;
     
    			////TREE : PAYS
     
    	try {
    			Statement state = laConnexion.createStatement() ;
    			ResultSet jeuEnregistrements = state.executeQuery(requettePays);
    			ResultSetMetaData infojeuEnregistrements = jeuEnregistrements.getMetaData();
    			while (jeuEnregistrements.next())    {
    			a = jeuEnregistrements.getString(1) ;
    		    itemPays=new TreeItem(tree,0) ;
    		    	itemPays.setText(a) ;		 
    			}
    	}
     
    	catch (SQLException e2) {
     
    	}
     
    			////TREE: REGION
    	int count = tree.getItemCount();
     
    	for (int i =0;i<count;i++) {
    	 TreeItem ti = (TreeItem) tree.getItems()[i];
    	 String pays = ti.getText() ;
     
    	String requetteRegion = "SELECT DISTINCT region from region where pays='"+pays+"'" ;
     
    	try {
    		Statement state = laConnexion.createStatement() ;
    		ResultSet jeuEnregistrements = state.executeQuery(requetteRegion);
    		ResultSetMetaData infojeuEnregistrements = jeuEnregistrements.getMetaData();
    		while (jeuEnregistrements.next())    {
    		a = jeuEnregistrements.getString(1) ;
    		 itemRegion=new TreeItem(ti,0) ;
    		    itemRegion.setText(a) ;
    		}
    	   }
    		catch (SQLException e2) {		
    		}
    	}
    		/////TREE: APPELLATION
     
     
    	TreeItem[] it = itemRegion.getItems() ;
    	TreeItem child = null ;
     
    	for (int i =1;i<3;i++) {
    		String region ;
    		   try {
    			        child = it[i] ;
    				region = child.getText(); 
    		     }
    		     catch (Exception e) {
    		    	 System.out.println(e.getStackTrace());
    		     }
     
    		String Requetteappellation = "SELECT DISTINCT appellation from region where region='"+region+"'" ;
     
    		System.out.println(Requetteappellation);
    		try {
    			Statement state = laConnexion.createStatement() ;
    			ResultSet jeuEnregistrements = state.executeQuery(Requetteappellation);
    			ResultSetMetaData infojeuEnregistrements = jeuEnregistrements.getMetaData();
    			while (jeuEnregistrements.next())    {
    			a = jeuEnregistrements.getString(1) ;
    		    itemAppellation=new TreeItem(child,0) ;
    			    itemAppellation.setText(a) ;
    			}
    		   }
     
    			catch (SQLException e2) {
     
    			}
    		  }
    Le code fonctionne pour les pays et les régions, mais bloque sur les appellations. Je pense que cette fonction ne fonctionne pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    TreeItem[] it = itemRegion.getItems() ;
    child = it[i] ;
    region = child.getText();
    Je n'utilise certainement pas la bonne méthode pour peuplé un arbre avec une base de données. Je veux evité le DataBinding autant que possible.

    Merci à tous pour votre aide.

  2. #2
    Membre Expert
    Avatar de Gueritarish
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2007
    Messages
    1 800
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 800
    Par défaut
    Salut,

    Je pense que tu prends le problème d'une façon éloigné de la manière Objet (et en plus tu te compliques la vie avec SWT).
    Donc, mon conseil d'implémentation :
    • Une classe Country qui a comme attribut le nom du pays ainsi que la liste des Régions.

    • Une classe District qui a comme attributs le nom de la région ainsi que la liste des Appellations.

    • Une classe Naming qui a comme attributs le nom de l'appellation.


    Ensuite, tu utilises un TreeViewer. C'est une classe de JFace qui est une sur-couche à la classe Tree de SWT. Je te renvois au tutoriel de keulkeul pour de plus ample détail sur le TableViewer... Je te le recommande, il est très facile à lire et simple d'accès.
    Donc, tu récupères tous tes objets dans ta base de donnée et tu peuples les différentes classes. Ensuite, tu utilises ce TreeViewer et tu lui donne en entrée la liste des pays. Le principe, c'est qu'il va falloir lui passer un ITreeContentProvider qui va s'occuper du contenu de l'arbre. Dans ce ContentProvider, il y a 3 méthodes principales :
    • La méthode hasChildren(Object anElement) qui renvoie true si l'élément en entrée à des enfants.

    • La méthode getChildren(Object anElement) qui renvoie les enfants de l'élément en entrée.

    • La méthode getElements(Object anElement) qui renvoie les éléments à afficher dans le Viewer par rapport à ce qui a été passé en input du Viewer.


    Si tu as des questions, ou si tu veux quelques conseils, n'hésite pas...
    Voilà, ++

    Gueritarish

Discussions similaires

  1. [Dojo] [débutant]Récupérer un item de Tree
    Par *.Har(d)t dans le forum Bibliothèques & Frameworks
    Réponses: 8
    Dernier message: 12/09/2011, 14h11
  2. [Dojo] Plusieurs item aevc même identifier dans Tree
    Par dbdb2719 dans le forum Bibliothèques & Frameworks
    Réponses: 10
    Dernier message: 05/06/2009, 15h57
  3. [AJAX] désactiver un item de tree
    Par senda dans le forum AJAX
    Réponses: 0
    Dernier message: 13/05/2009, 11h36
  4. Comment passer des données à un item dans un tree
    Par Sergejack dans le forum Flex
    Réponses: 0
    Dernier message: 24/04/2008, 16h51
  5. Listbox get item sélectionné
    Par ancrou dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 18/06/2007, 22h05

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