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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager