Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1441 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] PopupMenu sur un TextArea : cacher le popup windows

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA] PopupMenu sur un TextArea : cacher le popup windows

n°535124
noldor
Rockn'roll
Posté le 09-10-2003 à 12:05:53  profilanswer
 

J'ai un PopupMenu qui réagit au click droit dans un TextArea. Tout fonctionne bien, l'utilisateur peut faire son choix, lorsque le popupMenu disparait, le popup standard Windows apparait (Copier, Coller, Couper).
Qqn sait-il comment ne pas montrer ce popup ?


---------------
http://runnerstats.net
mood
Publicité
Posté le 09-10-2003 à 12:05:53  profilanswer
 

n°535145
nerisson
Pic-pic
Posté le 09-10-2003 à 12:31:32  profilanswer
 

:ouch: C'est quoi ton OS / JVM ?


---------------
Light is right
n°535151
the real m​oins moins
Posté le 09-10-2003 à 12:48:28  profilanswer
 

c'est dans quel contexte? une appli ou une applet?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°535186
bobuse
Posté le 09-10-2003 à 13:58:19  profilanswer
 

:heink: spa normal ça !!
 
enterre ton PC avec des gousses d'ail avant qu'il ne soit trop tard


Message édité par bobuse le 09-10-2003 à 13:58:28
n°535194
noldor
Rockn'roll
Posté le 09-10-2003 à 14:14:28  profilanswer
 

Nerisson a écrit :

:ouch: C'est quoi ton OS / JVM ?

windows 98
J2SDK 1.4.1
mais ça le fait avec d'autres combinaisons de windows/JVM


---------------
http://runnerstats.net
n°535195
noldor
Rockn'roll
Posté le 09-10-2003 à 14:15:15  profilanswer
 

the real moins moins a écrit :

c'est dans quel contexte? une appli ou une applet?

en appli
je vais tester pour voir si çale fait aussi en applet


---------------
http://runnerstats.net
n°535200
the real m​oins moins
Posté le 09-10-2003 à 14:20:14  profilanswer
 

si c'était en applet on pourrait tester aussi ;)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°535208
noldor
Rockn'roll
Posté le 09-10-2003 à 14:27:09  profilanswer
 

the real moins moins a écrit :

si c'était en applet on pourrait tester aussi ;)

je poste un exemple ce soir (avec le code) :jap:


---------------
http://runnerstats.net
n°535209
the real m​oins moins
Posté le 09-10-2003 à 14:28:22  profilanswer
 

ok :)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°535688
noldor
Rockn'roll
Posté le 09-10-2003 à 22:38:26  profilanswer
 

Bon, j'ai dépouillé ma classe de ces atours, et l'ai mise sous forme d'applet :
http://charlene25.free.fr/test/
Cliquez droit dans le textarea, choisissez u item, et admirez le joli popup windows qui s'affiche  :cry:  
 
 
Le code :
 

Code :
  1. public class Test extends Applet implements MouseListener {
  2.  TextArea text;
  3.  PopupMenu pop;
  4.  public Test() {
  5.  pop = new PopupMenu();
  6.  pop.add("Item 1" );
  7.  pop.add("Item 2" );
  8.  pop.add("Item 3" );
  9.  text = new TextArea(10,10);
  10.  text.setText("Cliquez droit pour voir le popup" );
  11.  text.addMouseListener(this);
  12.  text.add(pop);
  13.  add(text);
  14.  //pack();
  15.  }
  16. // Méthodes implémentant l'interface MouseListener
  17. public void mouseClicked(MouseEvent e) {}
  18.      public void mousePressed(MouseEvent e) {}
  19.      // en affichant le popup sur l'evt mouseReleased, on évite de mauvaises surprises liées au WM
  20.      public void mouseReleased(MouseEvent e) {   
  21.          int modifiers = e.getModifiers();
  22.          // le popup se déroule sur un right click, ou un click+control par exemple
  23.          if( e.isPopupTrigger() ) {
  24.               pop.show(text,e.getX(),e.getY());
  25.          }
  26.      }
  27.      public void mouseEntered(MouseEvent e) {}
  28.      public void mouseExited(MouseEvent e) {}
  29. public void init() {
  30.  Test t = new Test();
  31. }
  32. }


Message édité par noldor le 09-10-2003 à 22:42:32
mood
Publicité
Posté le 09-10-2003 à 22:38:26  profilanswer
 

n°535690
the real m​oins moins
Posté le 09-10-2003 à 22:39:51  profilanswer
 

je v voir :)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°535691
the real m​oins moins
Posté le 09-10-2003 à 22:40:02  profilanswer
 

ha tiens j'ai pas le plugin ici :whistle:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°535811
lorill
Posté le 10-10-2003 à 09:03:31  profilanswer
 

the real moins moins a écrit :

ha tiens j'ai pas le plugin ici :whistle:


je confirme, meme avec moz' [:wam]

n°535856
El_gringo
Posté le 10-10-2003 à 10:18:28  profilanswer
 

lorill a écrit :


je confirme, meme avec moz' [:wam]


 
Avec Moz 1.4, j'ai le plugin (Java Plug-in 1.4.1_02 for Netscape Navigator (DLL Helper))
Et, en effet, quand j'fais bouton droit, j'ai ton menu, et dès qu'il disparait, celui de windows apparait!
 
EDIT: d'ailleurs c'est même vachement curieux, parce que, en principe, dans Mozilla, le menu contextuel de windows n'est pas censé sortir. Quand on fait "bouton droit" dans Mozilla, normalement, c un menu contextuel propore à Mozilla qui doit tomber. Là, c'est bel et bien celui de Windows, j'reconnais le style (et le contenu). Dingue ça ! :pt1cable:


Message édité par El_gringo le 10-10-2003 à 10:22:38
n°535911
noldor
Rockn'roll
Posté le 10-10-2003 à 11:03:23  profilanswer
 

El_gringo a écrit :


 
Avec Moz 1.4, j'ai le plugin (Java Plug-in 1.4.1_02 for Netscape Navigator (DLL Helper))
Et, en effet, quand j'fais bouton droit, j'ai ton menu, et dès qu'il disparait, celui de windows apparait!
 
EDIT: d'ailleurs c'est même vachement curieux, parce que, en principe, dans Mozilla, le menu contextuel de windows n'est pas censé sortir. Quand on fait "bouton droit" dans Mozilla, normalement, c un menu contextuel propore à Mozilla qui doit tomber. Là, c'est bel et bien celui de Windows, j'reconnais le style (et le contenu). Dingue ça ! :pt1cable:  


merci de ta confirmation :jap:


---------------
http://runnerstats.net
n°535944
bobuse
Posté le 10-10-2003 à 11:29:50  profilanswer
 

j'ai essayé sous nux avec l'appletviewer (pas de plugins java :( ), et aucun popup !!
sinon, je pense que ce doit etre une special feature de la jvm sous windows qui crée un composant text windows ... :??: strange kan meme ...

n°535973
El_gringo
Posté le 10-10-2003 à 11:50:28  profilanswer
 

bobuse a écrit :

je pense que ce doit etre une special feature de la jvm sous windows qui crée un composant text windows ... :??: strange kan meme ...


 
Exact. Avec Spy++ (outil fourni avec VC++), En fait l'outil permet de connaitre tt sorte d'infos sur toute les "fenêtres" sous windows. j'ai trouvé la fenêtre de mozilla affichant la page avec l'applet en question, et entant que fenêtre fille, des trucs Java genre SunAwtCanvas, et à la fin de la hérarchie, un petit RICHEDIT. En inspectant les messages windows de clique reçus par cette fenêtre, on constate qu'en cas de clic droit, effectivement, après avoir fait un chois de le menu "Java", la fenêtre recoit bel et bien un WM_LBUTTONDOWN suivi d'un WM_LBUTTONUP. Soit un clic droit au sens Windows.
La seule solution que je vois, c'est passer par JNI (code C appelé depuis Java) pour intercepter les WM_LBUTTONDOWN et WM_LBUTTONUP que la fenêtre peut recevoir. J'éspère pour toi qu'il y a plus simple ! :D

n°535980
noldor
Rockn'roll
Posté le 10-10-2003 à 12:00:41  profilanswer
 

El_gringo a écrit :


 
Exact. Avec Spy++ (outil fourni avec VC++), En fait l'outil permet de connaitre tt sorte d'infos sur toute les "fenêtres" sous windows. j'ai trouvé la fenêtre de mozilla affichant la page avec l'applet en question, et entant que fenêtre fille, des trucs Java genre SunAwtCanvas, et à la fin de la hérarchie, un petit RICHEDIT. En inspectant les messages windows de clique reçus par cette fenêtre, on constate qu'en cas de clic droit, effectivement, après avoir fait un chois de le menu "Java", la fenêtre recoit bel et bien un WM_LBUTTONDOWN suivi d'un WM_LBUTTONUP. Soit un clic droit au sens Windows.
La seule solution que je vois, c'est passer par JNI (code C appelé depuis Java) pour intercepter les WM_LBUTTONDOWN et WM_LBUTTONUP que la fenêtre peut recevoir. J'éspère pour toi qu'il y a plus simple ! :D


c'est pas qqch que je pourrais intercepter en Java ? (j'imagine que non)


---------------
http://runnerstats.net
n°535989
El_gringo
Posté le 10-10-2003 à 12:07:59  profilanswer
 

noldor a écrit :


c'est pas qqch que je pourrais intercepter en Java ? (j'imagine que non)


 
J'imagine aussi que non!
Par contre, on voit que la JVM recoit le message et ensuite il est transmis à windows (le menu de windows n'apparait pas tant que le tiens n'est pas validé). Peut être y a t'il un moyen de ne pas trasmettre le message... Si c'est le cas, je n'le connais pas.

n°536039
R3g
fonctionnaire certifié ITIL
Posté le 10-10-2003 à 13:01:23  profilanswer
 

C'est bien du swing ton code hein ? pas du SWT ?

n°536052
the real m​oins moins
Posté le 10-10-2003 à 13:10:58  profilanswer
 

(mon plugin à la maison, c'est parce que j'ai viré ma jdk pour raisons de place :whistle:)
 
 
ici, j'ai le plugin, par contre j'ai aucun popup :D
(linux, firebird)


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°536098
El_gringo
Posté le 10-10-2003 à 13:57:47  profilanswer
 

R3g a écrit :

C'est bien du swing ton code hein ? pas du SWT ?


 
C'est du AWT.
Et c'est vrai qu'avec du Swing, le problème ne se produira plus : AWT utilise des composants natifs...
 
EDIT : Avec un JTextArea à la place tu TextArea, ça devrait êter mieux!


Message édité par El_gringo le 10-10-2003 à 13:58:36
n°536099
El_gringo
Posté le 10-10-2003 à 13:59:38  profilanswer
 

the real moins moins a écrit :

(mon plugin à la maison, c'est parce que j'ai viré ma jdk pour raisons de place :whistle:)
ici, j'ai le plugin, par contre j'ai aucun popup :D
(linux, firebird)


 
Normal. c'est qui fait qu'un menu contextuel sort sous windows, c'est du son composant (TextArea) est un composant windows natif. Pas étonnant que ce soit différent sous linux.

n°536175
lorill
Posté le 10-10-2003 à 14:58:04  profilanswer
 

El_gringo a écrit :

AWT utilise des composants natifs...


 :heink:

n°536190
veryfree
Posté le 10-10-2003 à 15:12:14  profilanswer
 

ben ca peux apporté un element de reponse:
 
le popup s'affiche par defaut sur les composants text en AWT,pas besoin de crée le popup menu donc et l'evenement est géré par l'OS...
d'un coté ca facilite le developpement mais dans ton cas ca fou le bordel...
regarde le code de textArea et essaye de surcharger la methode qui appel le popup pour voir

n°536208
lorill
Posté le 10-10-2003 à 15:25:14  profilanswer
 

veryfree a écrit :

ben ca peux apporté un element de reponse:


sauf qu'il me semble qu'awt n'utilise pas de widgets natifs... sinon, quel est l'interet de swt ?

n°536213
the real m​oins moins
Posté le 10-10-2003 à 15:26:46  profilanswer
 

El_gringo a écrit :


 
Normal. c'est qui fait qu'un menu contextuel sort sous windows, c'est du son composant (TextArea) est un composant windows natif. Pas étonnant que ce soit différent sous linux.

non je veux dire que j'ai pas NON PLUS le popup qu'on est supposé avoir.


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°536214
El_gringo
Posté le 10-10-2003 à 15:27:49  profilanswer
 


J'ai dit une connerie !? si c'est le cas, désolé.
En tout cas je maintiens que le TextArea qui est dans son applet est un contrôle RICHEDIT, au même titre que le CRichEdit des MFC (au niveau de la classe de fenêtre). Et qu'il reçoit les mêmes messages systèmes (WM_LBUTTONUP et autes...)

n°536215
veryfree
Posté le 10-10-2003 à 15:28:38  profilanswer
 

lorill a écrit :


sauf qu'il me semble qu'awt n'utilise pas de widgets natifs... sinon, quel est l'interet de swt ?


AWT utilise des lib natives a l'OS, c'est d'ailleurs ce qui a justifié la creation de swing: des composants IDENTIQUE quelque soit l'OS et c'est le cas...


Message édité par veryfree le 10-10-2003 à 15:30:43
n°536217
El_gringo
Posté le 10-10-2003 à 15:29:27  profilanswer
 

lorill a écrit :


sauf qu'il me semble qu'awt n'utilise pas de widgets natifs... sinon, quel est l'interet de swt ?


 
SWT, j'connais pas. C quoi ? Une implémentation d'interface qui utilise les compostants natifs des systèmes ?

n°536222
the real m​oins moins
Posté le 10-10-2003 à 15:31:20  profilanswer
 

y'a taiche qui va encore débarquer :pfff:


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°536267
noldor
Rockn'roll
Posté le 10-10-2003 à 15:57:25  profilanswer
 

merci à tous pour vos réponses
Pour des raisons de compatibilité, je suis obligé de rester en 1.1 donc pas de Swing. Je vais voir si je peux empêcher l'évt d'être généré
:jap:

n°668516
noldor
Rockn'roll
Posté le 09-03-2004 à 14:23:31  profilanswer
 

je uppe


---------------
http://runnerstats.net
n°668528
noldor
Rockn'roll
Posté le 09-03-2004 à 14:37:36  profilanswer
 

je viens de trouver la solution : dans la méthode mouseReleased(MouseEvent e), en consommant l'événement par un e.consume() le menu contextuel n'apparait plus
Je suis trop content !!


---------------
http://runnerstats.net
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] PopupMenu sur un TextArea : cacher le popup windows

 

Sujets relatifs
[Java] Plusieurs versions de JVM installées : problème[Motif] Popup Menu
[Java] faire tourner une appli 1.4.1 sur Mac OS 9.xComment faire l'intaller d'un programme sous Windows?
[java] aide pour structurer une fonction[APPLET] Intégrer un éditeur HTML opensource Java
[windows thread/processes] Le Sleep sous windows n'est pas précis.[JAVA] Intercepter le retour d'un prog lancé en ligne de commande
[LDAP] Création d'usager Java ou Perl?[JAVA] Intégrer du C++ dans un programme Java... ?
Plus de sujets relatifs à : [JAVA] PopupMenu sur un TextArea : cacher le popup windows


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR