Bonsoir tout le monde,
comme indique dans le titre, je ne peux pas sélectionner la dernière ligne après suppression d'une ligne.
voici le code de la suppression:
ChangeListener:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 @FXML private void deleteUser(ActionEvent event) { User u = userTable.getSelectionModel().selectedItemProperty().getValue(); if (u != null) { em.getTransaction().begin(); em.remove(u); data.remove(u); em.getTransaction().commit(); } }
voici la classe User:
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 private final ChangeListener<User> userListener = (value, oldV, newV) -> { if (oldV != null) { name.textProperty().unbindBidirectional(oldV.nameProperty()); mail.textProperty().unbindBidirectional(oldV.emailProperty()); birthdayPicker.valueProperty().unbindBidirectional(oldV.birthdayProperty()); } if (newV != null) { name.textProperty().bindBidirectional(newV.nameProperty()); mail.textProperty().bindBidirectional(newV.emailProperty()); birthdayPicker.valueProperty().bindBidirectional(newV.birthdayProperty()); } };
ce comportement me parait très bizarre!! pour quoi? je m'explique:
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 @Entity @Table(name = "USER") @NamedQueries({ @NamedQuery(name = "User.findAll", query = "SELECT u FROM User u"), @NamedQuery(name = "User.findByName", query = "SELECT u FROM User u WHERE u.name = :name"), @NamedQuery(name = "User.findByEmail", query = "SELECT u FROM User u WHERE u.email = :email")}) public class User { private static final long serialVersionUID = 1L; private final StringProperty name = new SimpleStringProperty(); private final StringProperty email = new SimpleStringProperty(); private final ObjectProperty<LocalDate> birthday = new SimpleObjectProperty<>(); public StringProperty nameProperty() { return name; } @Id @Basic(optional = false) @Column(name = "NAME") public String getName() { return name.get(); } public void setName(String name) { this.name.set(name); } public StringProperty emailProperty() { return email; } @Column(name = "EMAIL") public String getEmail() { return email.get(); } public void setEmail(String email) { this.email.set(email); } public ObjectProperty<LocalDate> birthdayProperty(){ return birthday; } @Column(name = "BIRTHDAY") @Temporal(TemporalType.DATE) public LocalDate getBirthday() { return birthday.get(); } public void setBirthday(LocalDate birthday){ this.birthday.set(birthday); } }
le problème apparait seulement quand la TableView doit contenir exactement 6 lignes. si je supprime la quatrième ou cinquième ligne, la dernière ligne (forcement la cinquième) devient inaccessible(non sélectionnable). dés que je fais une autre suppression la ligne qui n'était pas inaccessible devient accessible!!.
Partager