Drag and Drop usando Mouse Events

3 respostas
G

Eaí galera, tudo beleza?

Pois bem, minha dúvida apareceu subitamente e ela é imprescindível para o término do meu projeto. É o seguinte: Comecei a estudar Drag and Drop (Do próprio java), mas não gostei muito, estava achando difícil quando passava de um container para outro, arrastar JLabels para dentro de JPanel (renderizando a imagem para que sua posição atual fosse atualizada) e fiz meu próprio Drag and Drop usando Mouse Events.

É muito simples, no ato de clicar eu faço isso:

public void mousePressed(MouseEvent e) {
            try {
                inicio = e.getPoint();
                JComponent comp = (JComponent) e.getSource();
                
                comp.setBorder(new MatteBorder(1, 1, 1, 1, Color.black));
                dragging = true;
            } catch (Exception e5) {
            }
        }

E ao arrastar faço isso:

public void mouseDragged(MouseEvent e) {
            JComponent comp = (JComponent) e.getSource();
            String txt = labelFeed.getText();
            if(dragging) {
                Rectangle r = comp.getBounds();
                r.x += e.getX() - inicio.x;
                r.y += e.getY() - inicio.y;
                
                if(r.x >= painel.getX()) {
                    labelFeed.setText("Area do Panel");
                    JLabel label = (JLabel)comp;
                    label.setIcon(new ImageIcon("sad.jpg"));
                    label.setText("");
                } else {
                    labelFeed.setText(txt);
                    JLabel label = (JLabel)comp;
                    label.setIcon(null);
                    label.setText("TesteLabel");
                }
                comp.setBounds(r);
            }
        }

A minha dúvida é:

Há ocasiões onde eu não irei querer ARRASTAR um componente, e sim COPIÁ-LO para uma outra posição, alguém tem sugestões de como faço isso?

Obrigado!!

3 Respostas

G

Alguém? ));

R

nunca fiz isso mas pensando rapidamente assim pensei no método de mouseReleased… qndo soltar o botao do mouse, vc ao invés de alterar a localização do componente original vc cria outro

G

Poisé, mas essa criação do outro que tou me enrrolando…

Criado 10 de janeiro de 2013
Ultima resposta 11 de jan. de 2013
Respostas 3
Participantes 2