2010-12-03 5 views
0

J'ai un Jpanel, que je veux ajouter une info contextuelle sur un clic droit. Ainsi, les coordonnées de la popup peuvent changer. Toutefois, lorsque j'ajoute une popup dans la méthode paintComponent, l'application ralentit considérablement.Java popup, Jpanel et PopupFactory - mettre à jour les coordonnées x et y

J'utilise le code suivant pour obtenir une instance de la fenêtre contextuelle de la popupFactory dans le paintComponent:

public void paintComponent(java.awt.Graphics g) { 
    super.paintComponent(g); 
    Graphics2D g2d = (Graphics2D) g; 

if(Show){ 
    popup = factory.getPopup(this, l, mouseX, mouseY); 
    popup.show(); 
} 

l est un simple JLabel. Existe-t-il un autre moyen d'ajouter une fenêtre contextuelle d'information en cliquant avec le bouton droit sur un Jpanel.

Cheers,

Slotishtype

Répondre

3

Existe-t-il un autre moyen d'ajouter une fenêtre contextuelle d'information en cliquant avec le bouton droit sur un Jpanel.

La méthode normale consiste à utiliser un MouseListener et à écouter le clic droit de la souris, puis à afficher la fenêtre contextuelle. La méthode paintComponent() n'a rien à voir avec l'affichage de popups, puisque la popup ne fait pas partie du composant.

+0

Merci les gars, j'appelais la pop dans la méthode de la peinture pour une raison stupide ... – slotishtype

2

Vous ne devriez pas ajouterez un pop-up à chaque fois est peint le composant.

+0

Je sais. Mais le popupFactory ne me permet pas de mettre à jour les coordonnées de la popup .... Il y a une autre façon de contourner cela? – slotishtype

+0

Dans getPopup() vous passez les coordonnées. En supposant que vous utilisez un mouseListener, chaque clic droit pourrait avoir des coordonnées différentes, je ne comprends pas le problème que vous rencontrez? – jzd

+0

Même si je définis les coordonnées comme statiques, alors: popup = factory.getPopup (this, l, 189, 123); : l'application ralentit car paintComponenet est appelé à une fréquence d'images de 60X par seconde. Si j'ajoute le popup dans le contstructor, il n'y a pas de problème mais je suis incapable de changer les coordonnées en utilisant le mouseListener .... – slotishtype

Questions connexes