Bonjour (ou re lol)
Alors j'ai un problème d'ecouteur de soursis:
J'ai deux panel transaprent l'un au dessus de l'autre
l'un ecoute sur la totaliter de sa taille les clic et drag de la souris, l'autre a juste ajouter sur lui des micro panel qui on un ToolTipText.
Bien sur le panel ecoutant toute sa surface recupère tout les evenement et je ne sait pas comment les transmettre jusqu'a mes microPanel .
Un peu de code peut être :
le listener de mon panel ecoutant sur tout la surface :
le panel ayant le micro Panel sur lui :
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 class BAAreaClicListener implements MouseListener { public void mouseClicked(MouseEvent event) { } public void mouseEntered(MouseEvent event) { } public void mouseExited(MouseEvent event) { } public void mousePressed(MouseEvent event) { _clicked = event.getPoint(); } public void mouseReleased(MouseEvent event) {} } class BAAreaMotionListener implements MouseMotionListener { public void mouseDragged(MouseEvent event) { _phase =(float)(_phase + (event.getPoint().getY() - _clicked.getY())/(_me.getWidth()-10)); _me.repaint(); } public void mouseMoved(MouseEvent event) { System.out.println("c moi qui entend !"); } }
et enfin mes micro Panel :
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 import java.awt.Color; import java.awt.Graphics; import java.util.ArrayList; import javax.swing.JPanel; public class GenePan extends JPanel{ PositionScrollPanel _posPan; PhaseScrollPanel _phasePan; ArrayList _geneList; int _period; GenePan(PositionScrollPanel posPan, PhaseScrollPanel phasePan, ArrayList geneList, int period) { super(); // this.setBackground(new Color(1.0f, 1.0f, 1.0f, 0.0f)); this.setOpaque(false); _posPan = posPan; _phasePan = phasePan; _geneList = geneList; _period = period; this.setBounds(0,0,_posPan.getWidth(), _phasePan.getHeight()); } public void paintComponent(Graphics g) { super.paintComponent(g); drawGene(g); } private void drawGene(Graphics g) { this.setBounds(0,0,_posPan.getWidth(), _phasePan.getHeight()); int pixPhase = (int)((this.getHeight()-10)* _phasePan.getPhase())+5; for (int i=0; i< _geneList.size(); i++) { GenePoint gp = (GenePoint)_geneList.get(i); int x, y; x = _posPan.getXPosition(gp.getPosition()); y = _phasePan.getYPhase(gp.getPhase(_period)); gp.setLocation(x, y); this.add(gp); } } }
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73 import java.awt.Color; import java.awt.Graphics; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JPanel; public class GenePoint extends JPanel{ private int _position; private String _name; GenePoint(String name, int position) { _position= position; _name = name; this.addMouseListener(new PointListener()); this.setSize(5, 5); this.setOpaque(false); this.setToolTipText(name); System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); } public int getPosition() { return _position; } public String getName() { return _name; } public float getPhase(int period) { return (_position%period)/(float)period; } class PointListener implements MouseListener { public void mouseClicked(MouseEvent event) { System.out.println(_name); } public void mouseEntered(MouseEvent event) { // TODO Auto-generated method stub } public void mouseExited(MouseEvent event) { // TODO Auto-generated method stub } public void mousePressed(MouseEvent event) { // TODO Auto-generated method stub } public void mouseReleased(MouseEvent event) { // TODO Auto-generated method stub } } public void paintComponent(Graphics g) { super.paintComponent(g); System.out.println("bouh"); g.setColor(Color.BLACK); System.out.println(this.getY()); g.fillOval(0, 0, 5, 5); } }![]()
Partager