2011-02-03 3 views
1

Très bien, je sais comment faire, mais il fait quelque chose de bizarre. J'essaie de faire apparaître les coordonnées X Y correctes pour un JMenu. J'ai trouvé un moyen mais c'est seulement un hack. Tout le clic-droit a lieu sur le JList, pour l'instant jusqu'à ce que j'ajoute un panneau de caractères, alors disons que vous faites un clic droit près du coin supérieur gauche. Vous vous attendez à ce que la coordonnée Y soit d'environ 40 ~ pixels et que la coordonnée Y soit d'environ 100 ~ pixels à droite? Parce que vous cliquez sur la gauche proche où se trouve le JList. Faux. Les coordonnées x y comptent dans le coin supérieur gauche du JList lorsque je souhaite que le compte compte en haut à gauche de l'application WHOLE. : SObtenir les coordonnées EXACT de la souris en Java

Alors, qu'est-ce que j'ai fait? Comme la coordonnée Y est correcte, j'ai ajouté 512 pixels à la coordonnée X, donc c'est toujours dans la JList. Comme si:

   int newMouseX = 512+e.getX(); 
       popup.show(tileOffline.this, newMouseX, e.getY()); // show item at mouse 

Cependant, comme vous pouvez dire que je ne serai pas un clic droit dans le JList pour toujours.

Comment puis-je faire en sorte que j'obtiens les coordonnées exactes X Y de la souris de l'applet WHOLE?

Voici une image pour décrire la situation sans le 512 bidouille: enter image description here

+2

Vous avez reçu le lien vers le tutoriel Swing sur "Comment afficher un menu contextuel" (http://stackoverflow.com/questions/4854185/jlist-right-click-shows-menu-use-drop -Annuler). Le code dont vous avez besoin est dans le tutoriel. Lisez le tutoriel. Exécutez l'exemple de code. Comprendre les exemples de code. Postez votre SSCCE (pas une photo) quand vous avez des problèmes. C'est frustrant quand nous prenons le temps de répondre à vos questions et que vous ne pouvez même pas lire le tutoriel. – camickr

Répondre

4

Je me demande si vous rendez cela plus difficile que nécessaire. Le menu contextuel se positionne par rapport au composant que vous passez dans la méthode show (JPopupMenu API). Vous devez simplement être en mesure de montrer la popupmenu faire quelque chose comme ceci afin de l'obtenir pour montrer à l'emplacement correct:

popup.show(myJList, e.getX(), e.getY()); 
+0

Bon point; voir aussi http://download.oracle.com/javase/tutorial/uiswing/components/menu.html#popup – trashgod

+0

Merci pour l'info. – nn2

+0

@Jahkr, vous avez donné cette réponse il y a 2 jours !! – camickr

2

SwingUtilities a des méthodes appropriées pour convertir à partir des coordonnées d'écran, ainsi que parmi Components.

0

Utilisez les méthodes MouseEvent.getXOnScreen() et MouseEvent.getYOnScreen().

Le MouseEvent qui est généré lorsque vous déplacez ou cliquez sur une souris contient les coordonnées absolues à l'écran. Utilisez ces deux méthodes pour les obtenir.

Questions connexes