como faço para clicar em um componente por exemplo um botao e arrastar onde eu quero dentro de um form??
em tempo de execuçao…o usuario escolhe onde quer posicionar o JButton na tela
consigo fazer isso no netbeans??
como faço para clicar em um componente por exemplo um botao e arrastar onde eu quero dentro de um form??
em tempo de execuçao…o usuario escolhe onde quer posicionar o JButton na tela
consigo fazer isso no netbeans??
Essa técnica é chamada ‘drag and drop’. Tem como fazer, mas eu não sei como. Talvez isso ajude: http://java.sun.com/docs/books/tutorial/uiswing/dnd/index.html
vc pode pegar o evento onmousedown e colocar na posição do componente clicado as mesma cordenadss do mouse, e isso poderia ser interrompido no evento onmouseup.
mas eu consigo fazer o componente andar junto com o mouse…conforme eu arrasto…teria como me mostrar algum exemplo em codigo??
É algo assim que você quer:
import java.awt.EventQueue;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JButton;
import javax.swing.JFrame;
public class DragButtonDemo extends JFrame {
private static final long serialVersionUID = 1L;
private JButton botao;
public DragButtonDemo() {
super();
setTitle("Drag & Drop Demo");
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setLayout(null);
botao = new JButton("Arraste-me!");
botao.setBounds(50, 50, 150, 30);
botao.addMouseMotionListener(new Controler());
add(botao);
setSize(500, 500);
setVisible(true);
}
private class Controler extends MouseMotionAdapter {
@Override
public void mouseDragged(MouseEvent e) {
botao.setLocation(botao.getX() + e.getX(), botao.getY() + e.getY());
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new DragButtonDemo();
}
});
}
}
vlw isso mesmo que eu precisava…vou dar uma estudada no codigo e implementar coisas novas :lol:
como por exemplo adicionar varios JButtons com um botao adicionar vou ter q pensar um poko ainda^^
Sei q o topico é antigo, massss… fiz umas pequenas modificações para que quando o usuário clique no botão ele não de um salto como no exemplo anterior.
Abraços galera…
import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JButton;
import javax.swing.JFrame;
public class NewMain extends JFrame {
private static final long serialVersionUID = 1L;
private JButton botao;
private int x;
private int y;
public NewMain() {
super();
setTitle("Drag & Drop Demo");
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setLayout(null);
botao = new JButton("Arraste-me!");
botao.setBounds(50, 50, 150, 30);
botao.addMouseMotionListener(new Controler());
botao.addMouseListener(new MListener());
add(botao);
setSize(500, 500);
setVisible(true);
}
private class Controler extends MouseMotionAdapter {
@Override
public void mouseDragged(MouseEvent e) {
if (e.getX() - x == 0 || e.getX() - x == 0) {
x = e.getX();
}
if (e.getY() - y == 0 || e.getY() - y == 0) {
y = e.getY();
}
botao.setLocation(botao.getX() + (e.getX() - x), botao.getY() + (e.getY() - y));
}
}
private class MListener extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {
x = e.getX();
y = e.getY();
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new NewMain();
}
});
}
}