Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #59 da revista programar. Faz já o download aqui!

Reinilton

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

Mensagens Recomendadas

Reinilton    0
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


Link 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.