Ir para o conteúdo
Reinilton

Arraste de imagem - Como melhorar esta aplicação?

Mensagens Recomendadas

Reinilton

Criei esta aplicação para arrastar uma imagem porém não há precisão no arraste.

Como melhorar este código para que aja precisão no arraste?

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import javafx.geometry.Point2D;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

public class InserirDinamicamete extends JFrame implements MouseMotionListener, MouseListener{

JLabel jlabel;
ImageIcon ii;

private int initX;
private int initY;
private Point2D pontoDeArraste;

public InserirDinamicamete(){
super("Minha Janela");
setSize(400,300);
setLayout(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);

jlabel = new JLabel();
jlabel.setSize(40,37);
jlabel.setLocation(100, 100);
jlabel.setIcon(new ImageIcon(getClass().getResource("imagens//firefox.jpg")));
getContentPane().add(jlabel);

jlabel.addMouseMotionListener(this);
jlabel.addMouseListener(this);
}

public static void main(String[] args) {
new InserirDinamicamete().setVisible(true);
}

@Override
public void mouseDragged(MouseEvent e) {
System.out.println("1");
int dragX = (int) (e.getX() - pontoDeArraste.getX());
int dragY = (int) (e.getY() - pontoDeArraste.getY());

//Calcula nova posição do círculo
int novaPosicaoX = initX + dragX;
int novaPosicaoY = initY + dragY;

//Se a nova posição não exeder as bordas, muda a posição
jlabel.setLocation(novaPosicaoX, novaPosicaoY);

}

@Override
public void mouseMoved(MouseEvent e) {

}

@Override
public void mouseClicked(MouseEvent e) {

}

@Override
public void mousePressed(MouseEvent e) {

initX = jlabel.getX();
initY = jlabel.getY();
pontoDeArraste = new Point2D(e.getX(), e.getY());

}

@Override
public void mouseReleased(MouseEvent e) {

}

@Override
public void mouseEntered(MouseEvent e) {

}

@Override
public void mouseExited(MouseEvent e) {

}

}

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.