–>Também consigo mover essa imagem através do mouse.Porém, quando pressiono e seguro a seta na imagem , ela vai para o centro da imagem. O que quero é que a seta não vá para o centro , e sim que a seta fique onde eu pressionar. O código principal é
Vc precisa compensar a diferença da coordenada onde pressionou o mouse. Veja esse exemplo:
/** * * @author David */importjava.awt.Color;importjava.awt.Component;importjava.awt.Dimension;importjava.awt.EventQueue;importjava.awt.Graphics;importjava.awt.Image;importjava.awt.Point;importjava.awt.event.MouseAdapter;importjava.awt.event.MouseEvent;importjava.awt.image.BufferedImage;importjavax.swing.ImageIcon;importjavax.swing.JFrame;importjavax.swing.JLabel;/** * * @author David */publicclassJanelaextendsJFrame{privateJLabellbl;privateintxPressed;privateintyPressed;publicJanela(){setDefaultCloseOperation(EXIT_ON_CLOSE);setSize(500,500);setLocationRelativeTo(null);setLayout(null);lbl=newJLabel(newDummyImage());add(lbl);Dimensionsize=lbl.getPreferredSize();lbl.setBounds(10,10,size.width,size.height);lbl.addMouseListener(newMouseAdapter(){@OverridepublicvoidmousePressed(MouseEvente){xPressed=e.getX();yPressed=e.getY();}});lbl.addMouseMotionListener(newMouseAdapter(){@OverridepublicvoidmouseDragged(MouseEvente){Pointp=lbl.getLocation();lbl.setLocation(p.x+e.getX()-xPressed,p.y+e.getY()-yPressed);}});}privateclassDummyImageextendsImageIcon{BufferedImageimg;intlargura=200;intaltura=200;publicDummyImage(){img=newBufferedImage(largura,altura,BufferedImage.TYPE_INT_ARGB);Graphicsg=img.getGraphics().create();g.setColor(newColor(100,100,100));g.fillRect(0,0,largura,altura);g.dispose();}@OverridepublicsynchronizedvoidpaintIcon(Componentc,Graphicsg,intx,inty){g.drawImage(img,0,0,null);}@OverridepublicintgetIconWidth(){returnlargura;}@OverridepublicintgetIconHeight(){returnaltura;}@OverridepublicImagegetImage(){returnimg;}}publicstaticvoidmain(String[]args){EventQueue.invokeLater(newRunnable(){publicvoidrun(){newJanela().setVisible(true);}});}}
Eu particularmente prefiro implementar toda a infraestrutura para desenho de imagem dentro de um painel e controlar tudo por uma classe de desenho, mas do jeito que vc está fazendo acredito que vá resolver…