sur la classe PropertyValueFactory
	
	
		Bonsoir tout le monde;
j'aimerais une explication sur les deux instructions suivantes:
	Code:
	
| 12
 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:
	
| 12
 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:
	
| 12
 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:
	
| 12
 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 |