Código:
Como veréis, añado un listener de MouseMotion para capturar el evento de arrastrar. Cuando se produce obtengo la posición del puntero relativa al componente y voy actualizando la posición del JLabel...... lbl.addMouseMotionListener(new MouseMotionListener() { public void mouseDragged(MouseEvent e) { moviendoListener(e); } public void mouseMoved(MouseEvent e) {} }); ..... private void moviendoListener(MouseEvent evt) { JLabel lbl = (JLabel)evt.getSource(); lbl.setLocation(evt.getX()-(lbl.getWidth()/2), evt.getY()-(lbl.getHeight()/2)); System.out.println(evt.getX()+", "+evt.getY()); }
El caso es que lo mueve, sí, pero el JLabel "vibra" mientras lo estoy arrastrando.
Para ver qué sucedía he imprimido por consola las posiciones que obtengo del puntero y son un poco raras y, en absoluto, lineales:
133, 48
140, 80
134, 48
142, 81
134, 50
145, 83
137, 51
148, 86
141, 54
150, 87
145, 56
151, 90
148, 58
152, 91
150, 61
154, 93
151, 62
156, 95
153, 65
158, 99
155, 66
160, 100
156, 68
162, 103
158, 71
164, 104
160, 74
166, 105
160, 75
167, 107
162, 77
167, 109
165, 81
168, 111
165, 83
170, 115
167, 86
171, 118
169, 92
174, 121
170, 95
174, 124
171, 97
176, 126
171, 101
177, 129
174, 104
178, 134
175, 107
180, 136
178, 112
180, 137
181, 115
180, 139
185, 117
183, 142
186, 118
184, 144
186, 119
184, 145
186, 120
184, 146
187, 120
185, 148
188, 120
186, 150
188, 122
187, 151
190, 123
187, 152
191, 124
188, 153
191, 125
190, 154
191, 126
191, 155
192, 126
192, 157
194, 126
193, 158
195, 127
Al parecer recoge 2 tipos de posiciones o qué sé yo, de forma que necesitaría algún modo de "cribar" las que no me interesan (no siempre es una sí, una no)
Como dato curioso, en el evento mouseMoved sí que son correctas (consecutivas y lineales) las posiciones.
Si alguien me pudiera ayudar se lo agradecería enormemente.