PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Arraste de imagem - Como melhor esta aplicação? #517797

24/04/2015

0

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) {
        
    }
    
}
Reinilton

Reinilton

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar