Montrer menu contextuel et récupérer ID de la file actuelle
Bonjour,
Je voudrais montrer un Menu Contextuel en faisant "un clic" (no pas clic droit) sur une file quelconque de ma Tableview et récupérer une valeur de la file choisie, mais je reçois une erreur Null pointer.
Le même code ci-dessous marche bien si je n'ajoute pas l'instruction pour demander que le menu contextuel soit affiché par un simple clic.
Code:
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
| tableView.setRowFactory(
new Callback<TableView<Person>, TableRow<Person>>() {
public TableRow<Person> call(TableView<Person> tableView) {
final TableRow<Person> row = new TableRow<>();
final ContextMenu rowMenu = new ContextMenu();
MenuItem editItem = new MenuItem("Edit");
editItem.setId("rpt01");
editItem.setOnAction((ActionEvent event) -> {
System.out.println("%%%%%"+editItem.getId());
});
MenuItem removeItem = new MenuItem("Delete");
removeItem.setId("rpt02");
removeItem.setOnAction((ActionEvent event) -> {
//Me renvoie Null, le code perd la file actuel
System.out.println("+++++"+row.getItem().getTest());
});
rowMenu.getItems().addAll(editItem, removeItem);
row.contextMenuProperty().bind(
Bindings.when(Bindings.isNotNull(row.itemProperty()))
.then(rowMenu)
.otherwise((ContextMenu)null));
//--->Montrer le Menu Contextuel avec un simple clic
tableView.setOnMouseClicked((MouseEvent e) -> {
rowMenu.show(tableView, e.getScreenX(), e.getScreenY());
});
//<--- en enlevante ce morceau de code ça marche, mais en faisant clic droit
return row;
}
}); |
Merci d'avance si quelqu'un peut me donner des idées pour résoudre cette situation.