いつものように、「大きな問題」をより小さなものに分割し、一度に1ステップずつ取り上げることがベストです。 私は、次のドラッグの例を学んで開始することをお勧め:あなたのアイデアを得るとき
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
public class DragTest extends JFrame {
int pX, pY;
public DragTest() {
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setPreferredSize(new Dimension(600, 500));
JPanel jPanel1 = new JPanel();
add(jPanel1);
jPanel1.setLayout(null);
final JButton button = new JButton("Drag Me");
button.setBounds(50, 50, 150, 25);
button.addMouseMotionListener(new MouseMotionAdapter(){
@Override
public void mouseDragged(MouseEvent me) {
button.setLocation((button.getLocation().x + me.getX()) - pX,
(button.getLocation().y + me.getY()) - pY);
jPanel1.revalidate();
jPanel1.repaint();
}
});
button.addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent me) {
// Get x,y and store them
pX = me.getX();
pY = me.getY();
}
});
jPanel1.add(button);
jPanel1.revalidate();
jPanel1.repaint();
pack();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new DragTest().setVisible(true);
}
});
}
}
次に、(必要なアニメーションを作成するために)PXとはpY文法的にではなく、マウスドラッグによりを変更しようとします。
これは2つのボタンで行います。
最後のステップとして、ポジションを交換するために必要な計算を追加します。
参照:http://stackoverflow.com/help/someone-answers – c0der