Bonjour,


j'ai un probleme de mouseDragged.

le but est qu'une ligne vertical se dessine. Cette ligne doit commencer au moment ou on enfonce le bouton de la souri, puis quand on deplace la souri voir le ligne grandir en suivant la souri. puis quand on relache le bouton la ligne est tracé.

Or dans mon cas quand je deplace la souri, la ligne "clignote" et du coup elle est pas forcement tracé quand je relache la souri.

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
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
74
75
76
77
78
chart.addMouseMotionListener(new MouseMotionListener() {
 
            @Override
            public void mouseDragged(MouseEvent e) {
                xMov = e.getX();
                yMov = e.getY();
                boolMov = true;
                repaint();
                // boolMov = false;
 
            }
 
            @Override
            public void mouseMoved(MouseEvent e) {
                // TODO Auto-generated method stub
 
            }
 
        });
 
 
protected void paintChildren(final Graphics g) {
                super.paintChildren(g);
                try {
 
                    ChartDataView dataView = getDataView(1);
                    JCDefaultDataSource dataSource = (JCDefaultDataSource) dataView.getDataSource();
                    double[] x = dataSource.getXSeries(0);
                    double[] hi = dataSource.getYSeries(0);
                    double[] lo = dataSource.getYSeries(1);
 
                    SwtUtilities.runSyncOrAsync(new Runnable() {
                        public void run() {
                            if (!table.isDisposed()) {
                                points = table.getCellSelection();
                            }
 
                            model = (DefaultConfidenceTableModel) table.getModel();
                        }
                    });
 
                    for (int i = 0; i < x.length; i++) {
 
                        Point phi = dataView.dataCoordToCoord(x[i], hi[i]);
                        Point plo = dataView.dataCoordToCoord(x[i], lo[i]);
 
                        g.drawLine(phi.x - 2, phi.y, phi.x + 2, phi.y);
                        g.drawLine(plo.x - 2, plo.y, plo.x + 2, plo.y);
 
                        for (int j = 0; (points != null) && (j < points.length); j++) {
 
                            if ((i > 0) && (model != null)
                                    && (x[i] == model.getTime(points[j].y - 1)) && !boolMov) {
                                g.setColor(Color.red);
                                g.drawLine(phi.x - 2, phi.y, phi.x + 2, phi.y);
                                g.drawLine(plo.x - 2, plo.y, plo.x + 2, plo.y);
                                g.drawLine(phi.x, phi.y, plo.x, plo.y);
                                g.setColor(Color.black);
                                break;
                            }
                            else if ((i > 0) && (model != null)
                                    && (x[i] == model.getTime(points[j].y - 1)) && boolMov) {
                                g.setColor(Color.green);
                                g.drawLine(phi.x - 2, yMov, phi.x + 2, yMov);
                                g.drawLine(plo.x - 2, plo.y, plo.x + 2, plo.y);
                                g.drawLine(phi.x, yMov, plo.x, plo.y);
                                g.setColor(Color.black);
 
                            }
                        }
                    }
 
                    model = null;
                }
                catch (Exception e) {
                    log.warn(e, e);
                }
            }