62,614
社区成员
发帖
与我相关
我的任务
分享
import java.awt.BorderLayout;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.net.URL;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.event.MouseInputAdapter;
/**
* @author closewbq
* 拖动图片
*/
public class DragImage extends JFrame {
private JLabel imageLabel;
private JPanel jpanel;
public DragImage() {
URL path = DragImage.class.getResource("xxxx.jpg");
ImageIcon image = new ImageIcon(path);
jpanel = new PanelImage(image);
imageLabel = new JLabel(image);
jpanel.setSize(900, 600);
jpanel.add(imageLabel);
setLayout(null);
this.getContentPane().add(jpanel);
DragListener listener = new DragListener();
imageLabel.addMouseListener(listener);
imageLabel.addMouseMotionListener(listener);
setTitle("图片拖动");
setSize(900, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
class DragListener extends MouseInputAdapter {
Point point = new Point(0, 0);
public void mouseDragged(MouseEvent e) {
Point newPoint = SwingUtilities.convertPoint(imageLabel, e
.getPoint(), imageLabel.getParent());
//新位置
imageLabel.setLocation(imageLabel.getX() + (newPoint.x - point.x),
imageLabel.getY() + (newPoint.y - point.y));
//更改坐标点
point = newPoint;
}
public void mousePressed(MouseEvent e) {
point = SwingUtilities.convertPoint(imageLabel, e.getPoint(),
imageLabel.getParent());
System.out.println(e.getPoint().x + " : " + e.getPoint().y);
System.out.println(point.x + " : " + point.y);
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new DragImage();
}
});
}
class PanelImage extends JPanel {
BorderLayout borderLayout = new BorderLayout();
private ImageIcon image = null;
public PanelImage(ImageIcon image) {
try {
this.image = image;
jbInit();
} catch (Exception exception) {
exception.printStackTrace();
}
}
private void jbInit() throws Exception {
this.setLayout(borderLayout);
}
protected void paintComponent(Graphics g) {
setOpaque(true);
super.paintComponent(g);
g.drawImage(image.getImage(), 0, 0, null, null);
}
}
}