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

JavaFX Discussion :

remplir une treeView depuis une bdd


Sujet :

JavaFX

  1. #1
    Membre habitué Avatar de Hind4Dev
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 428
    Points : 140
    Points
    140
    Par défaut remplir une treeView depuis une bdd
    voilà j'ai besoin de remplir une treeView depuis les données de ma bdd qui contient une table de composants où chacun à la valeur id de son composant père ainsi que son niveau, j'ai commencé par ceci:

    1. une méthode private int maxNiv() qui retourne le niveau maximal afin de savoir boucler jusqu'au combien.
    2. une méthode void fillList() qui remplie une observableList de tous les valeurs de ma table composants (id, composant, niveau, pere)


    dans la méthode qui rempli mon arborescence, j'ai pensé à deux boucles, une parcourant chaque niveau, l'autre parcoure la liste, si le pere du composant parcouru = celui du niveau j'ajoute le noeud, mais je suis débutante en javafx et je ne trouve pas le code approprié

    merci

  2. #2
    Membre habitué Avatar de Hind4Dev
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 428
    Points : 140
    Points
    140
    Par défaut
    j'ai essayé ce code mais il est plein d'erreurs que je ne sais résoudre


    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
     
    //récupération de tous les parents dans la liste parents
    ObservableList parents;
     
    private void fillParents(String id) {
            parents = FXCollections.observableArrayList();
            String query = "SELECT parent FROM composant WHERE id=?";
            try {
                ps = cnx.prepareStatement(query);
                ps.setString(1, id);
                rs = ps.executeQuery();
     
                while (rs.next()) {
                    parents.add(rs.getString(1));
                }
                ps.close();
                rs.close();
            } catch (Exception e) {
                System.err.println("Error" + e);
            }
        }
    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
     
    //récupération de tous les composants la liste childs depuis le model compModel
    List<compModel> childs;
     
    private void fillChilds(String id) {
            childs = FXCollections.observableArrayList();
            String query = "SELECT * FROM composant WHERE id=?";
            try {
                ps = cnx.prepareStatement(query);
                ps.setString(1, id);
                rs = ps.executeQuery();
     
                while (rs.next()) {
                    childs.add(new compModel(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5)));
                }
                ps.close();
                rs.close();
            } catch (Exception e) {
                System.err.println("Error" + e);
            }
        }
    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
     
    //remplissage de l'arborescence
     
    private void fillTree() {
     
            for (compModel child : childs) {
                TreeItem<String> item = new TreeItem<String>(child.getComposant());
                //TreeItem<String> parent = new TreeItem<String>(child.getParent());
                for (Object parent : parents) {
                    //si la valeur du code egal à la valeur du parent on ajoute le composant à son composant père
                    if (parent.getValue().contentEquals(child.getCode())){
                        parent.getChildren().add(item);
                    }
                }
            }

  3. #3
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Erreurs qui sont ?

    A première vue, le code semble correct (impossible a tester).
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  4. #4
    Membre habitué Avatar de Hind4Dev
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 428
    Points : 140
    Points
    140
    Par défaut
    Ah! Je m'excuse, j'ai oublié de mentionner l'endroit de l'erreur.
    Bref, l'erreur est dans le test, il n'accepte pas la fonction getValue() ni getChildrent() pour une ObservableList et je ne trouve pas comment accéder aux éléments de ma liste

  5. #5
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Ben il faut utiliser get() comme sur une liste normale
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  6. #6
    Membre habitué Avatar de Hind4Dev
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 428
    Points : 140
    Points
    140
    Par défaut
    Le seul get qui apparait dès que je mets le point est le getClass()

  7. #7
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Reprenons, reprenons... peux-tu nous indiquer la ligne qui pose des soucis STP ?
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  8. #8
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Si c'est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                for (Object parent : parents) {
                    //si la valeur du code egal à la valeur du parent on ajoute le composant à son composant père
                    if (parent.getValue().contentEquals(child.getCode())){
                        parent.getChildren().add(item);
                    }
                }
    Je te rappelle que dans cette boucle parent est de type Object
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  9. #9
    Membre habitué Avatar de Hind4Dev
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 428
    Points : 140
    Points
    140
    Par défaut
    Il s'agit ee cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     if (parent.getValue().contentEquals(child.getCode())){
                        parent.getChildren().add(item);
                    }
    Sur le getValue et getChildren

  10. #10
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 840
    Points : 22 854
    Points
    22 854
    Billets dans le blog
    51
    Par défaut
    Ben voila parent étant de type Object ces méthodes n'existent pas. Donc soit faut boucler avec le bon type, soit faut caster.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  11. #11
    Membre habitué Avatar de Hind4Dev
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2014
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2014
    Messages : 428
    Points : 140
    Points
    140
    Par défaut
    j'ai fais quelques changements mais je reçois null exception

    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
     
    @FXML
    private TableView<systeme> sysTable;
    @FXML
    private TableColumn<systeme, String> idCol;
    @FXML
    private TableColumn<systeme, String> sysCol;
     
    //remplissage du tableau
        public void initTable() throws Exception {
            mySys = sqlObj.getAllSys();// appel de la méthode qui extrait de la bdd
     
     
            idCol.setCellValueFactory(new PropertyValueFactory<>("id"));
            sysCol.setCellValueFactory(new PropertyValueFactory<>("sys"));
            sysTable.setItems(null);
            sysTable.getColumns().addAll(idCol, sysCol);
            sysTable.setItems(mySys);
        }
    la méthode getAllSys()
    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
     
    //Selectionner tous les systèmes pour le tableau
        public ObservableList getAllSys() throws SQLException {
            cnx = Conn.Connect();
            String query = "SELECT * FROM systeme";
            try {
                ps = cnx.prepareStatement(query);
                rs = ps.executeQuery();
                while (rs.next()) {
                    mySys.add(new systeme(rs.getString(1), rs.getString(2)));
                }
                return mySys;
            } catch (Exception e) {
                System.err.println("Error" + e);
                return null;
            } finally {
                if (ps != null) {
                    ps.close();
                }
                if (cnx != null) {
                    cnx.close();
                }
            }
        }
    voici l'exception
    Errorjava.lang.NullPointerException
    java.lang.NullPointerException
    at amdec.system.SystemeController.initTable(SystemeController.java:58)
    at amdec.AMDECController.loadSysteme(AMDECController.java:53)
    la ligne indiqué est celle où j'instancié les colonnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    idCol.setCellValueFactory(new PropertyValueFactory<>("id"));

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/10/2015, 17h16
  2. Modifier une variable d'une classe depuis une autre classe
    Par Kezado dans le forum Général Java
    Réponses: 8
    Dernier message: 23/09/2010, 14h52
  3. [AC-2007] Copier une table depuis une base vers une autre
    Par Triton972 dans le forum VBA Access
    Réponses: 3
    Dernier message: 01/11/2009, 19h27
  4. [RCP] Remplir un TableViewer d'une Vue depuis une Action
    Par DarkHope dans le forum Eclipse Platform
    Réponses: 16
    Dernier message: 26/06/2006, 15h06
  5. Réponses: 3
    Dernier message: 16/01/2006, 16h02

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