PopupMenu sur un TextArea : cacher le popup windows [JAVA] - Java - Programmation
Marsh Posté le 09-10-2003 à 12:48:28
c'est dans quel contexte? une appli ou une applet?
Marsh Posté le 09-10-2003 à 13:58:19
spa normal ça !!
enterre ton PC avec des gousses d'ail avant qu'il ne soit trop tard
Marsh Posté le 09-10-2003 à 14:14:28
Nerisson a écrit : C'est quoi ton OS / JVM ? |
windows 98
J2SDK 1.4.1
mais ça le fait avec d'autres combinaisons de windows/JVM
Marsh Posté le 09-10-2003 à 14:15:15
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
Marsh Posté le 09-10-2003 à 14:20:14
si c'était en applet on pourrait tester aussi
Marsh Posté le 09-10-2003 à 14:27:09
the real moins moins a écrit : si c'était en applet on pourrait tester aussi |
je poste un exemple ce soir (avec le code)
Marsh Posté le 09-10-2003 à 14:28:22
ReplyMarsh Posté le 09-10-2003 à 22:38:26
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
Le code :
Code :
|
Marsh Posté le 09-10-2003 à 22:39:51
ReplyMarsh Posté le 09-10-2003 à 22:40:02
ha tiens j'ai pas le plugin ici
Marsh Posté le 10-10-2003 à 09:03:31
ReplyMarsh Posté le 10-10-2003 à 10:18:28
lorill 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 !
Marsh Posté le 10-10-2003 à 11:03:23
El_gringo a écrit : |
merci de ta confirmation
Marsh Posté le 10-10-2003 à 11:29:50
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 ...
Marsh Posté le 10-10-2003 à 11:50:28
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 !
Marsh Posté le 10-10-2003 à 12:00:41
El_gringo a écrit : |
c'est pas qqch que je pourrais intercepter en Java ? (j'imagine que non)
Marsh Posté le 10-10-2003 à 12:07:59
noldor a écrit : |
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.
Marsh Posté le 10-10-2003 à 13:10:58
(mon plugin à la maison, c'est parce que j'ai viré ma jdk pour raisons de place )
ici, j'ai le plugin, par contre j'ai aucun popup
(linux, firebird)
Marsh Posté le 10-10-2003 à 13:57:47
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!
Marsh Posté le 10-10-2003 à 13:59:38
the real moins moins a écrit : (mon plugin à la maison, c'est parce que j'ai viré ma jdk pour raisons de place ) |
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.
Marsh Posté le 10-10-2003 à 15:12:14
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
Marsh Posté le 10-10-2003 à 15:25:14
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 ?
Marsh Posté le 10-10-2003 à 15:26:46
El_gringo a écrit : |
non je veux dire que j'ai pas NON PLUS le popup qu'on est supposé avoir.
Marsh Posté le 10-10-2003 à 15:27:49
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...)
Marsh Posté le 10-10-2003 à 15:28:38
lorill a écrit : |
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...
Marsh Posté le 10-10-2003 à 15:29:27
lorill a écrit : |
SWT, j'connais pas. C quoi ? Une implémentation d'interface qui utilise les compostants natifs des systèmes ?
Marsh Posté le 10-10-2003 à 15:31:20
y'a taiche qui va encore débarquer
Marsh Posté le 10-10-2003 à 15:57:25
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é
Marsh Posté le 09-03-2004 à 14:37:36
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 !!
Marsh Posté le 09-10-2003 à 12:05:53
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