cocomineo
Messages postés4Date d'inscriptionvendredi 16 février 2007StatutMembreDernière intervention 9 octobre 2009
-
31 août 2009 à 10:37
jennydjen
Messages postés11Date d'inscriptionmercredi 16 décembre 2009StatutMembreDernière intervention12 janvier 2011
-
16 déc. 2009 à 16:07
Bonjour à tous !
Voici mon problème :
J'ai une JDialog qui affiche un JPopupMenu lors d' un click droit sur son panel qui recupere les coordonnées de l'endroit clické ( important pour mon projet ).
Or comme vous pouvez le constater si vous testez ce bout de code, dès que je clic une premiere fois, le popup s'affiche correctement à la position indiquée, lors d'un second clic le popup s'affiche au même endroit.
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.AbstractAction;
import javax.swing.JDialog;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
public class Tests extends JDialog{
JPopupMenu pop ;
int tempX , tempY;
public Tests(){
super();
pop = new JPopupMenu() ;
JMenuItem menu = new JMenuItem(new AbstractAction("pop") {
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("blabal");
}
});
menu.setArmed(true);
pop.add(menu);
this.getContentPane().addMouseListener(new MouseAdapter() {
@Override
public void mouseReleased(MouseEvent arg0) {
pop.show(Tests.this, tempX, tempY);
}
@Override
public void mousePressed(MouseEvent arg0) {
tempX = arg0.getX();
tempY = arg0.getY();
}
@Override
public void mouseClicked(MouseEvent arg0) {
// tempX = arg0.getX();
// tempY = arg0.getY();
// pop.show(Tests.this, tempX, tempY);
}
});
}
public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
Tests t = new Tests();
t.setVisible(true);
}
}
Mon tuteur de stage n'arrive pas a faire un simple clic, sa souris se deplace entre la pression et le relachement du bouton.
Ce qui correspond à un mousePressed puis à un mouseReleased. Et il m'as aussi demandé de garder l'apparence de l'OS ( d'ou le getSystemLookandFeel...)
Ce que je ne comprends pas , c' est :
- pourquoi le bout de code placé entre commentaire dans le mouseClicked fonctionne sur un clic précis ( sans Drag ) et ne fonctionne pas lorqu'on le decompose en 2parties ( mousePressed et MouseReleased )
- pourquoi ce bout de code marche parfaitement lorsque je desactive le look de mon OS ( Windows Vista ).
Si quelqu'un pouvait me donner une solution à mon problème et surtout m'eclairer sur ce phénomène, j'ai eu beau chercher sur internet, dans la doc , modifier la modalité des composants , me pencher sur le LightWeight et HeavyWeight.