JAVA - Problème avec MouseListener et MouseMotionListener
Bonjour tout le monde !
Voilà, je suis en train de programmer un logiciel en JAVA permettant entre autres d'afficher des données sur un tableau (j'ai utilisé JTable), et j'aimerais que lorsque l'utilisateur pointe sa souris sur une des lignes du tableau, celle-ci s'affiche en plus grand (j'ai utilisé Window).
J'ai créé une classe qui hérite de JPanel et qui contient le tableau. Cette classe implémente les interfaces MouseListener et MouseMotionListener, et donc j'ai ajouté cette classe comme MouseListener et MouseMotionListener du tableau.
Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| public void mouseMoved(MouseEvent me)
{
System.out.println("dedans"); //test
int x,y,rownb,rowheight; // (x,y) : position relative au tableau de la souris
// rownb : le numéro de la ligne où s'est arrêtée la souris
String text;
x = me.getX();
y = me.getY();
rowheight = dataTables[0].getRowHeight(); //dataTables[0] : le tableau en question
rownb = y/rowheight;
text = (String)dataTables[0].getValueAt(rownb,0);
for(int i=1;i<dataTables[0].getColumnCount();i++) // récupération des contenus des cellules composant la ligne
{
text += " | "+(String)dataTables[0].getValueAt(rownb,i);
}
details.removeAll(); //details : la Window
details.setSize(text.length()*8, 20);
details.add(new JPanel().add(new JLabel(text)));
details.setLocation(me.getXOnScreen(),me.getYOnScreen()); // je place la Window au niveau de la souris
details.setVisible(true);
}
public void mouseExited(MouseEvent me)
{
System.out.println("dehors");
details.setVisible(false);
} |
Le problème, c'est que le contenu de Window est illisible car la classe considère que je ne cesse de rentrer/sortir du tableau. Même en restant immobile sur une des lignes du tableau, ce phénomène ce produit.
Au niveau de la console, mes tests donnent une alternance de "dedans" et "dehors".
J'espère avoir été assez clair, et merci d'avance pour vos réponses ! :)
Gaaston