写这个demo是为了学习使用鼠标监听的相关类和方法。
package com.huanzhuang.util;
import javax.swing.*;
import javax.swing.event.MouseInputAdapter;
import java.awt.*;
import java.awt.event.MouseEvent;
public class MyMouseInputAdapter extends MouseInputAdapter {
JLabel Pic;
Point point = new Point(0,0);
public MyMouseInputAdapter(JLabel jLabel){
this.Pic=jLabel;
}
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; //更改坐标点
}
}
package com.huanzhuang.util;
import javax.swing.*;
import java.awt.*;
public class Moving {
JLabel pic1,pic2;
JFrame frame;
JPanel panel;
public Moving(){
frame = new JFrame("换装游戏");
ImageIcon img1 = new ImageIcon("src\\res\\pic1.png");//图片文件路径
ImageIcon img2 = new ImageIcon("src\\res\\pic2.png");
img1.setImage(img1.getImage().getScaledInstance(600,600,Image.SCALE_DEFAULT));//修改图片尺寸
img2.setImage(img2.getImage().getScaledInstance(150,150,Image.SCALE_DEFAULT));
pic1=new JLabel(img1);
pic2=new JLabel(img2);
panel=new JPanel();
panel.setBackground(Color.white);
panel.add(pic1);
panel.add(pic2);
MyMouseInputAdapter listener1=new MyMouseInputAdapter(pic1); //鼠标事件处理
pic1.addMouseListener(listener1); //增加标签的鼠标事件处理
pic1.addMouseMotionListener(listener1);
MyMouseInputAdapter listener2=new MyMouseInputAdapter(pic2); //鼠标事件处理
pic2.addMouseListener(listener2); //增加标签的鼠标事件处理
pic2.addMouseMotionListener(listener2);
frame.add(panel);
frame.setSize(400,300);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
package com.huanzhuang.game;
import com.huanzhuang.util.*;
import java.awt.*;
public class HuanZhuangGame extends Frame {
public static void main(String[] args){
new Moving();
}
}