我提出了一个简单但工作良好的解决方案,由我自己找到;)
我该怎么办?
>按下鼠标时,我在屏幕上记录光标的位置,然后
组件的位置.
>拖动鼠标时,我计算新的和之间的差异
旧光标在屏幕上的位置,并移动
由这种差异组成.
使用最新的JDK 6 unter Linux(OpenSuse,KDE3)进行测试,
但是,嘿,它是Java Swing,应该在所有地方同等地工作.
这里是代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class MyDraggableComponent
extends JComponent {
private volatile int screenX = 0;
private volatile int screenY = 0;
private volatile int myX = 0;
private volatile int myY = 0;
public MyDraggableComponent() {
setBorder(new LineBorder(Color.BLUE, 3));
setBackground(Color.WHITE);
setBounds(0, 0, 100, 100);
setOpaque(false);
addMouseListener(new MouseListener() {
@Override