[Java] Problème avec JPopupMenu [résolu]

Problème avec JPopupMenu [résolu] [Java] - Java - Programmation

Marsh Posté le 10-11-2003 à 12:14:48    

Bonjour,
 
J'ai créé un JPopupMenu qui peut s'afficher dans différentes circonstances (activation d'un hyperlien ou cliquage d'une sélection textuelle). Mon problème est que je ne parviens pas à le faire disparaître correctement. J'aimerais par exemple qu'un clic hors du menu contextuel le fasse disparaître. Je pensais qu'il suffirait d'ajouter un mouse listener dans la JFrame où apparaît ce menu, mais rien d'y fait ! :( Alors mis à part ajouter un tel listener pour chaque composant graphique de mon application, quelqu'un connaît-il une solution moins dégeulasse ? Merci d'avance ! :hello:


Message édité par Krueger le 10-11-2003 à 13:39:22

---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 10-11-2003 à 12:14:48   

Reply

Marsh Posté le 10-11-2003 à 12:26:03    

http://java.sun.com/docs/books/tut [...] html#popup
bizarre, dans le tutorial, ils mettent rien pour le faire disparaitre. t'es sûr que t'as besoin de mettre quelquechose ?


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 10-11-2003 à 12:51:15    

Ben j'ai beau cliquer à côté, il reste visible. :/ Reste que ce n'est pas un menu qui apparaît par un clic droit dans le cas où.


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 10-11-2003 à 13:39:19    

Problème résolu : il faut utiliser show(Component, int, int) au lieu de setVisible(boolean) pour faire apparaître le menu contextuel.
Rien sur le tutorial ni la javadoc pour ça. :sarcastic:


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 10-11-2003 à 15:33:15    

j'ai comme un doute la :D
 
 
edit:
 

Code :
  1. JPopupMenu popup;
  2.     //...where the GUI is constructed:
  3.     //Create the popup menu.
  4.     popup = new JPopupMenu();
  5.     menuItem = new JMenuItem("A popup menu item" );
  6.     menuItem.addActionListener(this);
  7.     popup.add(menuItem);
  8.     menuItem = new JMenuItem("Another popup menu item" );
  9.     menuItem.addActionListener(this);
  10.     popup.add(menuItem);
  11.     //Add listener to components that can bring up popup menus.
  12.     MouseListener popupListener = new PopupListener();
  13.     output.addMouseListener(popupListener);
  14.     menuBar.addMouseListener(popupListener);
  15. ...
  16. class PopupListener extends MouseAdapter {
  17.     public void mousePressed(MouseEvent e) {
  18.         maybeShowPopup(e);
  19.     }
  20.     public void mouseReleased(MouseEvent e) {
  21.         maybeShowPopup(e);
  22.     }
  23.     private void maybeShowPopup(MouseEvent e) {
  24.         if (e.isPopupTrigger()) {
  25.            popup.show(e.getComponent(),
  26.                        e.getX(), e.getY());
  27.         }
  28.     }
  29. }


 
http://java.sun.com/docs/books/tut [...] html#popup


Message édité par veryfree le 10-11-2003 à 15:41:12
Reply

Marsh Posté le 10-11-2003 à 16:46:29    

veryfree a écrit :

j'ai comme un doute la :D
...


 
Certes, mais rien ne disait qu'il ne fallait pas utiliser setVisible(boolean) sous peine de risquer d'être confronté au problème que j'ai eu. Avec les méthodes show() obsolétées et setVisible(boolean) recommandées pour les composants graphiques en général, j'ai eu le réflexe d'ignorer toutes les méthodes dont le nom est show. :whistle:

Reply

Marsh Posté le 10-11-2003 à 17:14:28    

perso jpe pas dire, jm'inspire souvent de code venant de softs libres :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed