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 :

Afficher un objet composé dans TableView


Sujet :

JavaFX

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Autre

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Par défaut Afficher un objet composé dans TableView
    Salut à tout le monde !!!
    Quelqu'un pourrait-il nous aider parce que apparemment, j'ai le même problème et jusque là je n'avance pas sur mon projet.

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Plus de détails, du code montrant ce que tu tentes de faire ou a déjà fait et un sujet dédié peut-être ?
    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

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Autre

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Par défaut junior
    Citation Envoyé par bouye Voir le message
    Plus de détails, du code montrant ce que tu tentes de faire ou a déjà fait et un sujet dédié peut-être ?
    bonjour Mr D'abord j'ai une classe personne et une classe fille nommée gérant et dans cette classe gérant j'ai une propriété qui est de type personne ayant les attributs prénom, nom etc.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    @FXML    private TableView<Gerant> tableaugerant;
        //@FXML    private TableColumn<Gerant, Personne> idgerantcolumn;
        @FXML    private TableColumn<Gerant, Personne> codegerantcolumn;
        @FXML    private TableColumn<Gerant, Personne> prenomgerantcolumn;
        @FXML    private TableColumn<Gerant, Personne> nomgerantcolumn;
     
    //affichage tableau gérant
                idgerantcolumn.setCellValueFactory(new PropertyValueFactory<>("id.getIdpersonne"));
                codegerantcolumn.setCellValueFactory(new PropertyValueFactory<>("code"));
                prenomgerantcolumn.setCellValueFactory(new PropertyValueFactory<>("prenom"));
                prenomgerantcolumn.setCellFactory(column -> new EtudiantCell());
                nomgearntcolumn.setCellValueFactory(new PropertyValueFactory<>("nom"));
    après jai fai une jointure entre gerant et personne afin de recupérer l'ensemble des gérants et les personnes liées sous forme de liste... et les ajouter dans le tableview avec tableaugerant.getItems().add(p); p etant de type gérant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    //voici une partie du code de la classe gérant
    public class Gerant  implements java.io.Serializable {
         private GerantId id; 
         private Personne personne;
         private String secure;
    }
    maintenant tout mon problème se trouve à l'affichage des champs relatifs à la classe personne parsk ceux liés à la classe Gerant fonctionne très bien (secure par exple).

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Lien vers la discussion de référence : Java fx, afficher un tableView ayant une liste objet (lui meme contient plusieurs objets)

    Et donc du coup tu es passé avec le débogueur dans EtudiantCell pour voir ce qui n'allait pas et pourquoi ça n'affichait pas ce que tu voulais ?
    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

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Autre

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Par défaut
    Citation Envoyé par junior ndoye Voir le message
    Oui j'ai utilisé la cellule que vs aviez posté en haut mai ça ne march tjrs po j'arrive pas à afficher les noms et prénoms relatifs au gérant parsk ces champs je les ai dans la classe personne qui est 1 objet dans gérant

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Et ton code est ? Tu as repris le mien tel quel ? Il s'agissait d'une piste de recherche pas d'un exemple fonctionnel.


    Citation Envoyé par bouye Voir le message
    Quelque chose dans le genre (a tester et a améliorer) :
    Et ta classe Personne est ?

    Si comme l'auteur initial de la question tu ne donnes pas un minimum de trucs qui permettent de tester ton problème histoire que d'autres qui sont déjà occupés par autre chose ne doivent pas tout recoder par eux-mêmes, les réponses vont mettre longtemps a arriver...
    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

  7. #7
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Merci...

    Bon avant même de jeter un coup d’œil dessus, je vais recommencer encore une fois par un cours de pédagogie classique : quand vous avez un soucis dans un gros programme, plutôt que de bidouiller votre gros programme (ce qui est compliqué et va sans doute le casser) et de nous le recopier ici (ce qui ne va pas faire plaisir à votre employeur ou votre équipe car vous allez divulguer vos secrets), c'est beaucoup plus pratique pour vous de vous créer une version simplifiée du problème à coté dans un programme de test ! Et lorsque vous avez trouvé/prouvé la solution dans votre programme de test ALORS vous l’intégrez dans votre gros programme !

    Déjà parce que ça vous permet de vous focaliser uniquement sur le problème en question (et comme ça ça vous permet aussi parfois de trouver la solution tout seul) et pas 36 autres sources potentielle de plantage.

    Et ensuite car ça permet sans soucis de partager le code publiquement avec autrui !
    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
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Autre

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Par défaut junior
    Merci pr l'info et j'en tiendrai compte la prochaine fois

  9. #9
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Une solution simpliste parmi d'autres:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    package tablecompose;
     
    public final class GerantId {
     
        private static int ID = 0;
        private final int id = ID++;
     
        public int getId() {
            return id;
        }
    }
    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
    package tablecompose;
     
    public final class Gerant {
     
        private final GerantId id;
        private final Personne personne;
     
        public Gerant(GerantId id, Personne personne) {
            this.id = id;
            this.personne = personne;
        }
     
        public GerantId getId() {
            return id;
        }
     
        public Personne getPersonne() {
            return personne;
        }
    }
    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
    package tablecompose;
     
    public final class Personne {
     
        private final int idpersonne;
        private final String prenom;
        private final String nom;
     
        public Personne(int idpersonne, String prenom, String nom) {
            this.idpersonne = idpersonne;
            this.prenom = prenom;
            this.nom = nom;
        }
     
        public int getIdpersonne() {
            return idpersonne;
        }
     
        public String getPrenom() {
            return prenom;
        }
     
        public String getNom() {
            return nom;
        }
    }
    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    package tablecompose;
     
    import java.util.stream.IntStream;
    import javafx.application.Application;
    import javafx.scene.Scene;
    import javafx.scene.control.TableCell;
    import javafx.scene.control.TableColumn;
    import javafx.scene.control.TableView;
    import javafx.scene.control.cell.PropertyValueFactory;
    import javafx.scene.layout.StackPane;
    import javafx.stage.Stage;
     
    public final class Main extends Application {
     
        public static void main(final String... args) {
            launch(args);
        }
     
        private TableView<Gerant> tableaugerant;
        private TableColumn<Gerant, GerantId> codegerantcolumn;
        private TableColumn<Gerant, Personne> prenomgerantcolumn;
        private TableColumn<Gerant, Personne> nomgerantcolumn;
     
        @Override
        public void start(final Stage primaryStage) throws Exception {
            tableaugerant = new TableView<>();
            codegerantcolumn = new TableColumn<>("Code");
            codegerantcolumn.setCellValueFactory(new PropertyValueFactory<>("id"));
            codegerantcolumn.setCellFactory(tableColumn -> new GerantIdTableCell());
            prenomgerantcolumn = new TableColumn<>("Prenom");
            prenomgerantcolumn.setCellValueFactory(new PropertyValueFactory<>("personne"));
            prenomgerantcolumn.setCellFactory(tableColumn -> new PersonneTableCell(PersonneTableCell.Flavor.FORNAME));
            nomgerantcolumn = new TableColumn<>("Nom");
            nomgerantcolumn.setCellValueFactory(new PropertyValueFactory<>("personne"));
            nomgerantcolumn.setCellFactory(tableColumn -> new PersonneTableCell(PersonneTableCell.Flavor.NAME));
            tableaugerant.getColumns().setAll(codegerantcolumn, prenomgerantcolumn, nomgerantcolumn);
            tableaugerant.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
            final StackPane root = new StackPane(tableaugerant);
            final Scene scene = new Scene(root);
            primaryStage.setScene(scene);
            primaryStage.setWidth(500);
            primaryStage.setHeight(500);
            primaryStage.show();
            //
            final String[] fornames = {"Henry", "Babette", "Abdel", "Choi"};
            final String[] names = {"Wood", "Dupond", "Kadir", "Wang"};
            IntStream.range(0, fornames.length)
                    .mapToObj(index -> {
                        final String forname = fornames[index];
                        final String name = names[index];
                        final Personne personne = new Personne(index, forname, name);
                        final GerantId geranId = new GerantId();
                        final Gerant gerant = new Gerant(geranId, personne);
                        return gerant;
                    })
                    .forEach(tableaugerant.getItems()::add);
        }
     
        private static class GerantIdTableCell extends TableCell<Gerant, GerantId> {
     
            @Override
            protected void updateItem(GerantId item, boolean empty) {
                super.updateItem(item, empty);
                String text = null;
                if (!empty && item != null) {
                    text = String.valueOf(item.getId());
                }
                setText(text);
            }
        }
     
        private static class PersonneTableCell extends TableCell<Gerant, Personne> {
     
            public static enum Flavor {
                FORNAME, NAME;
            }
     
            private Flavor flavor;
     
            public PersonneTableCell(Flavor flavor) {
                this.flavor = flavor;
            }
     
            @Override
            protected void updateItem(Personne item, boolean empty) {
                super.updateItem(item, empty);
                String text = null;
                if (!empty && item != null) {
                    switch (flavor) {
                        case FORNAME:
                            text = item.getPrenom();
                            break;
                        case NAME:
                            text = item.getNom();
                            break;
                    }
                }
                setText(text);
            }
        }
    }
    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

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Etudiant
    Inscrit en
    Avril 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Autre

    Informations professionnelles :
    Activité : Etudiant
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2018
    Messages : 5
    Par défaut junior
    Merci!!! Mr, mon problème est résolu, je vous remercie profondément
    Maintenant je demandais si vs auriez par hasard des liens à me fournir histoire de mieux les comprendre et les appliquer dans d'autres éventuelles situations...
    Encore merci Mr et chapeau à vous.

  11. #11
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Août 2005
    Messages : 6 900
    Billets dans le blog
    54
    Par défaut
    Euh....

    Je ne sais pas moi, faire des recherches sur Google, lire des blogs, cours ou livres ou même du code source de projet visibles sur github ou autres, être curieux, savoir fouiller, faire des tests et expériences jusqu'à ce que ça marche...
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/01/2011, 09h52
  2. Réponses: 6
    Dernier message: 14/11/2007, 15h51
  3. Réponses: 2
    Dernier message: 15/07/2007, 12h43
  4. Réponses: 7
    Dernier message: 17/03/2005, 11h18
  5. Réponses: 3
    Dernier message: 26/10/2004, 07h31

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