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 :

sur la classe PropertyValueFactory


Sujet :

JavaFX

  1. #1
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 212
    Points : 184
    Points
    184
    Par défaut sur la classe PropertyValueFactory
    Bonsoir tout le monde;
    j'aimerais une explication sur les deux instructions suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //col1.setCellFactory(new PropertyValueFactory<UserData, String>("name"));
                col1.setCellValueFactory(new Callback<CellDataFeatures<UserData, String>, ObservableValue<String>>() {
                    public ObservableValue<String> call(CellDataFeatures<UserData, String> p) {
                        return p.getValue().nameProperty();
                    }
                });
    si j'ai bien lit et compris les documentations sur le Net, les deux instructions sont équivalente; la signification est la suivante: il existe un attribut name de type StringProperty dans la classe userData qu'on veut lier à la colonne col1; est ce vrai çà?
    si les deux instruction sont vraiment équivalentes; dans le code ci dessous , pour quoi la première (la forme abrégée) me génère une erreur et la deuxième (plus longue) se compile normale.
    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
    public class FXMLController implements Initializable {
     
        @FXML
        private TableView<UserData> table;
        @FXML
        private TableColumn<UserData, String> col1;
        @FXML
        private TableColumn<UserData, String> col2;
        @FXML
        private TextField name;
        @FXML
        private TextField email;
        private ObservableList<UserData> data;
        private Connection conn;
        private Statement stm;
        private PreparedStatement prep;
        private ResultSet result;
     
        /**
         * Initializes the controller class.
         */
        @Override
        public void initialize(URL url, ResourceBundle rb) {
            try {
                conn = CreateConnection.getConnection();
                stm = conn.createStatement();
                stm.executeUpdate(" drop table user if exists;");
                stm.executeUpdate("create table user(Name varchar(50),Email varchar(50))");
     
                data = FXCollections.observableArrayList();
     
                result = conn.createStatement().executeQuery("select *from user");
     
                while (result.next()) {
                    data.add(new UserData(result.getString("Name"), result.getString("Email")));
                }
     
                //col1.setCellFactory(new PropertyValueFactory<UserData, String>("name")); génère une erreur
                col1.setCellValueFactory(new Callback<CellDataFeatures<UserData, String>, ObservableValue<String>>() {
                    public ObservableValue<String> call(CellDataFeatures<UserData, String> p) {
                        return p.getValue().nameProperty();
                    }
                });
     
                // col2.setCellFactory(new PropertyValueFactory<UserData, String>("Email")); génère une erreur
     
                col2.setCellValueFactory(new Callback<CellDataFeatures<UserData, String>, ObservableValue<String>>() {
                    public ObservableValue<String> call(CellDataFeatures<UserData, String> p) {
                        return p.getValue().emailProperty();
                    }
                });
     
                table.setItems(null);
                table.setItems(data);
     
            } catch (IOException ex) {
                Logger.getLogger(FXMLController.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SQLException ex) {
                Logger.getLogger(FXMLController.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    la classe UserData:
    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
    public  class UserData {
     
            private StringProperty name;
            private StringProperty email;
     
              UserData(String name, String email) {
                this.name = new SimpleStringProperty(name);
                this.email = new SimpleStringProperty(email);
            }
     
            public StringProperty nameProperty() {
                return name;
            }
     
            public StringProperty emailProperty() {
                return email;
            }
            public String getName(){
                return name.get( );
            }
            public void setName(String v){
                name.set(v);
            }
            public String getEmail(){
                return email.get();
            }
            public void setEmail(String v){
                email.set(v);
            }
        }
    l'erreur générée est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    error: incompatible types: PropertyValueFactory<UserData,String> cannot be converted to Callback<TableColumn<UserData,String>,TableCell<UserData,String>>
                col1.setCellFactory(new PropertyValueFactory<UserData, String>("name"));
    Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output

  2. #2
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 212
    Points : 184
    Points
    184
    Par défaut
    Bonjour tout le monde;
    j'ai commis une erreur de frappe, au lieu d'utiliser la methode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     col1.setCellValueFactory(new PropertyValueFactory<UserData, String>("name"));
    j'ai utilisé la methode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     col1.setCellFactory(new PropertyValueFactory<UserData, String>("name"));
    le probème est résolu;

  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
    ce n'était pas leur meilleur jour que celui où ils ont décidé de donner des noms aussi proches à ces deux propriétés...
    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. Question sur la classe InputStream
    Par Zec Merquise dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 26/10/2005, 02h36
  2. Création dynamique de méthode sur une classe ?
    Par elitost dans le forum Général Java
    Réponses: 9
    Dernier message: 18/10/2005, 14h47
  3. [Exception]Gestion des exceptions, capture sur la classe.
    Par @lantis dans le forum Général Java
    Réponses: 9
    Dernier message: 22/07/2005, 19h43
  4. Réponses: 14
    Dernier message: 14/03/2005, 09h16
  5. [MFC] Problème pointeur sur une classe
    Par mick74 dans le forum MFC
    Réponses: 7
    Dernier message: 14/04/2004, 14h17

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