package Shrewmouse;
import java.awt.Cursor;
import java.awt.EventQueue;
import java.awt.Image;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Shrewmouse extends JFrame implements Runnable {
private JLabel[] mouses; // 存放显示底数的标签数组
private ImageIcon img,imgMouse; // 地鼠图片对象
public static void main(String args[]) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Shrewmouse frame = new Shrewmouse(); // 创建窗体
frame.setVisible(true); // 显示窗体
new Thread(frame).start(); // 启动线程
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Shrewmouse() {
super();
this.setResizable(false); // 禁止调整窗体大小
this.getContentPane().setLayout(null); // 窗体不使用布局管理器
this.setTitle("打地鼠"); // 设置窗体标题
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
img = new ImageIcon("E:/HJJ/youxi/bk.jpg");
// 初始化背景图片
imgMouse = new ImageIcon("E:/HJJ/youxi/mouse.png");
// 初始化地鼠图片对象
mouses = new JLabel[9]; // 创建显示地鼠的标签数组
for (int i = 0; i < 9; i++) { // 遍历数组
mouses[i] = new JLabel(); // 初始化每一个数组元素
mouses[i].setSize(imgMouse.getIconWidth(), imgMouse.getIconHeight());
// 设置标签与地鼠图片相同大小
mouses[i].addMouseListener(new MouseAdapter() {// 为标签添加鼠标事件监听适配器
/**
* 处理鼠标单击事件的方法
*/
@Override
public void mouseClicked(MouseEvent e) {
Object source = e.getSource(); // 获取事件源,即地鼠标签
if (source instanceof JLabel) { // 如果事件是标签组件
JLabel mouse = (JLabel) source; // 强制转换为JLabel标签
mouse.setIcon(null); // 取消标签图标
}
}
});
this.getContentPane().add(mouses[i]); // 添加显示地鼠的标签到窗体
}
mouses[0].setLocation(120, 310); // 设置每个标签的位置
mouses[1].setLocation(130, 210);
mouses[2].setLocation(160, 120);
mouses[3].setLocation(350, 310);
mouses[4].setLocation(350, 210);
mouses[5].setLocation(350, 120);
mouses[6].setLocation(570, 310);
mouses[7].setLocation(550, 210);
mouses[8].setLocation(540, 120);
final JLabel backLabel = new JLabel(); // 创建显示背景的标签
backLabel.setBounds(0, 0, img.getIconWidth(), img.getIconHeight());
this.setBounds(100, 100, img.getIconWidth(), img.getIconHeight());
backLabel.setIcon(img); // 添加背景到标签
this.getContentPane().add(backLabel); // 添加背景标签到窗体
}
/**
* 线程的核心方法
*/
public void run() {
while (true) { // 使用无限循环
try {
Thread.sleep(2000); // 使线程休眠2秒
int index = (int) (Math.random() * 9); // 生成随机的地鼠索引
if (mouses[index].getIcon() == null) { // 如果地鼠标签没有设置图片
mouses[index].setIcon(imgMouse); // 为该标签添加地鼠图片
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}