Arrastando Component

4 respostas
m4des

Ola pessoal, como posso fazer para que, quando eu clicar no component, arrastar uma copia dele em um mesmo frame?

Desde ja agradeço.

4 Respostas

davidbuzatto

Dá uma olhada nos fontes, qte lá tem o processo de arraste do componente.

http://www.guj.com.br/posts/list/48266.java

m4des

Ola davidbuzatto, consegui fazer arrastar o component, mas eu queria que quando eu fosse arrastar o component em vez de arrastar ele proprio, arrastar uma copia dele.

Obrigado pela ajuda.

davidbuzatto

Ao clicar no componente, criau ma nova instancia, adiciona no container e manda o componente criado seguir o mouse.

m4des

Davidbuzatto fiz este codigo aqui, mas nao ta dando certo voce poderia me falar o que ha de errado nele?

O codigo:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Arrastar extends JFrame implements MouseMotionListener, MouseListener  {

	JComponent newInstance = null;
	JButton botao = null;
		
	public Arrastar(){
		botao = new JButton("Arraste-me");
		botao.addMouseListener(this);
		getContentPane().add(botao);
	}

	public void mouseClicked(MouseEvent arg0) {
				
	}

	public void mouseEntered(MouseEvent arg0) {
				
	}

	public void mouseExited(MouseEvent arg0) {
				
	}

	public void mousePressed(MouseEvent arg0) {
		try {
			newInstance = botao.getClass().newInstance();
			getContentPane().add(newInstance);
			newInstance.addMouseMotionListener(this);
		} catch (InstantiationException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		}
	}

	public void mouseReleased(MouseEvent arg0) {
				
	}
	
	public void mouseDragged(MouseEvent arg0) {
		newInstance.setLocation((int)MouseInfo.getPointerInfo().getLocation().getX(),
								(int)MouseInfo.getPointerInfo().getLocation().getY());
	}

	public void mouseMoved(MouseEvent arg0) {
				
	}
	
	public static void main(String[] strings){
		Arrastar a = new Arrastar();
		a.setLayout(new FlowLayout());
		a.setDefaultCloseOperation(EXIT_ON_CLOSE);
		a.setSize(500, 300);
		a.setVisible(true);
	}

}

Obrigado.

Criado 23 de dezembro de 2006
Ultima resposta 24 de dez. de 2006
Respostas 4
Participantes 2