public class Arrastando extends MouseAdapter implements MouseMotionListener {
/** */
int baseX = -1;
/** */
int baseY = -1;
/**
* @see java.awt.event.MouseMotionListener#mouseDragged(java.awt.event.MouseEvent)
*/
public void mouseDragged(MouseEvent e) {
Component b = e.getComponent();
if ((this.baseX != -1) && (this.baseY != -1)) {
int x = b.getX() + e.getX() - this.baseX;
int y = b.getY() + e.getY() - this.baseY;
b.setLocation(x, y);
b.getParent().repaint();
}
}
/**
* @see java.awt.event.MouseMotionListener#mouseMoved(java.awt.event.MouseEvent)
*/
public void mouseMoved(MouseEvent e) {
//
}
/**
* @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
*/
public void mousePressed(MouseEvent e) {
this.baseX = e.getX();
this.baseY = e.getY();
}
/**
* @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
*/
public void mouseReleased(MouseEvent e) {
this.baseX = -1;
this.baseY = -1;
}
/**
* @param args -
*/
public static void main(String[] args) {
Random rand = new Random();
JFrame f = new JFrame("Teste");
f.setSize(640, 480);
Dimension windowSize = f.getSize();
Container contentPane = f.getContentPane();
contentPane.setLayout(null);
JComponent[] comp = new JComponent[10];
for (int i = 0; i < comp.length; i++) {
comp[i] = new JButton("Fly");
comp[i].setLocation(rand.nextInt(windowSize.width), rand.nextInt(windowSize.height));
comp[i].setSize(comp[i].getPreferredSize());
Arrastando mouseController = new Arrastando();
comp[i].addMouseListener(mouseController);
comp[i].addMouseMotionListener(mouseController);
contentPane.add(comp[i]);
}
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
f.getGlassPane().setVisible(true);
}
}
Analizem meu codigo veja que compila e funciona 100%, abre o form com os icones e se eu clicar neles e arrastar eles vao tranquilamente, mas gostaria de implementar um outro estado neles, gostaria de que se eu segurar o click em um botao e arrastar pro lado e bater em algum otro botao, esse otro botao fosse pro lado tambem ex:
simulando uma situacao real de pegar algo, bater no componente e esse componente se mexer conforme vc bate no componente!
alguem ja passo por isso? qqr ajuda sera bem vinda !