Bonjour,
j'ai fait un jpopmenu pour que lorsqu'on clique droit sur une ligne de ma table il propose un menu contextuel, le menu contextuel s'affiche, me propose mon menu, si je clique l'action s'exécute... sauf qu'un fois que l'action s'est exécutée si je refait un clique droit sur une ligne j'ai ce message d'erreur :
Sinon pour la partie code :Exception in thread "AWT-EventQueue-0" java.awt.IllegalComponentStateException: component must be showing on the screen to determine its location
at java.awt.Component.getLocationOnScreen_NoTreeLock(Unknown Source)
at java.awt.Component.getLocationOnScreen(Unknown Source)
at javax.swing.JPopupMenu.show(Unknown Source)
at com.monsite.ihm.FrameRemiseDeCheques$1.mouseClicked(FrameRemiseDeCheques.java:136)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
La ligne 136 du message d'erreur :
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 //met le mouse listener pour supprimer des lignes du tableau tableRemise.addMouseListener(new MouseListener(){ public void mouseClicked(MouseEvent arg) { JPopupMenu menuContextuel = new JPopupMenu(); //sur le clique droit propose un menu contextuel //pour supprimer la ligne selectionnée if (arg.getButton()==3){ //recup la ligne cliquée Point position = arg.getPoint(); final int ligne = tableRemise.rowAtPoint(position); int xposition = position.x; int yposition = position.y; //vire les lignes selectionnée tableRemise.getSelectionModel().clearSelection(); //selectionne la ligne sur laquelle l'utilisateur à cliqué tableRemise.getSelectionModel().addSelectionInterval(ligne,ligne); //affiche le menu contextuelle AbstractAction supprligne = new AbstractAction("Supprimer la ligne"){ public void actionPerformed(ActionEvent arg0){ ((RemiseEnBanqueTableModel) tableRemise.getModel()).removeRow(ligne); razlapage();//rafraichie la page et lance des controles } }; JMenuItem supp = new JMenuItem(); supp.setAction(supprligne); menuContextuel.add(supp); menuContextuel.show(tableRemise,xposition,yposition); } } public void mousePressed(MouseEvent arg0) { } public void mouseReleased(MouseEvent arg0) { } public void mouseEntered(MouseEvent arg0) { } public void mouseExited(MouseEvent arg0) { } });
Code : Sélectionner tout - Visualiser dans une fenêtre à part menuContextuel.show(tableRemise,xposition,yposition);
Partager