항상 그렇듯이 "큰 문제"를 작은 문제로 분해하고 한 번에 한 단계 씩 진행하는 것이 가장 좋습니다. 나는 다음 마우스로 끄는 예를 배우기 시작하는 것이 좋습니다 것입니다 : 당신이 아이디어를 얻을 때
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의와 평 문법보다는 마우스 드래그로 변경하려고합니다.
두 개의 버튼을 사용하는 것보다 낫습니다.
마지막 단계로 위치를 바꾸는 데 필요한 계산을 추가하십시오.
참조 : http://stackoverflow.com/help/someone-answers – c0der