图片的任意拖动JLabel实现

来源:互联网 发布:ubuntu怎样打开终端 编辑:程序博客网 时间:2024/05/16 16:15
//图片的任意拖动JLabel实现
import java.awt.Color;
import java.awt.Point;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.event.MouseInputListener;
public class Test1
{
JLabel Pic;//图片,用于拖动
JFrame frame;
JPanel panel;


public Test1()
{
frame=new JFrame("图片的拖动");
Pic=new JLabel(new ImageIcon("my.jpg"));
panel=new JPanel();
panel.setBackground(Color.white);
panel.add(Pic);


//事件
DragPicListener listener=new DragPicListener();//鼠标事件处理
Pic.addMouseListener(listener);//增加标签的鼠标事件处理
Pic.addMouseMotionListener(listener);


frame.add(panel);
frame.setSize(400,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}


class DragPicListener implements MouseInputListener
{
Point point=new Point(0,0);//坐标点


public void mousePressed(MouseEvent e)
{
point=SwingUtilities.convertPoint(Pic,e.getPoint(),Pic.getParent());//得到当前坐标点
}


public void mouseDragged(MouseEvent e)
{
Point newPoint=SwingUtilities.convertPoint(Pic,e.getPoint(),Pic.getParent());//转换坐标系统
Pic.setLocation(Pic.getX()+(newPoint.x-point.x),Pic.getY()+(newPoint.y-point.y));
//设置标签图片的新位置
point=newPoint;//更改坐标点
}


public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseClicked(MouseEvent e){}
public void mouseMoved(MouseEvent e){}
}


public static void main(String[] args)
{
new Test1();
}
}
 
 
 
 
原创粉丝点击