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