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.
Merci d'avance si quelqu'un peut me donner des idées pour résoudre cette situation.
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 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; } });
Partager