首先准备几个素材图片
JFrame画一个主页面,设置了全局的行、列和总数,循环添加所有的地鼠(将所有地鼠先隐藏)并注册点击事件
开一个线程用于地鼠显示的事件,生成随机数,显示一个随机位置的地鼠,等设置时间结束,如果没有改变就消失,如此循环执行
添加点击事件,打中地鼠,调用一个线程,执行地鼠消失的事件
所有代码如下:
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.IOException;
import java.util.Random;
public class Demo extends JFrame implements Runnable {
public JLabel bgLabel;//背景图片
public JLabel[] mouses;//老鼠
public JLabel jtf; //分数
public int score;
public Random random = new Random();
public Demo() {
//锤子
Cursor myCursor = null;
try {
myCursor = Toolkit.getDefaultToolkit().createCustomCursor(ImageIO.read(new File("hammer.png")),new Point(0,0),"");
} catch (IOException e) {
e.printStackTrace();
}
setCursor(myCursor);
//得分
jtf = new JLabel();
jtf.setBounds(360,10,235,50);
jtf.setFont(new Font("",Font.BOLD,25));
jtf.setForeground(Color.blue);
jtf.setText("您的得分是: 分");
add(jtf);
bgLabel = new JLabel(); //背景图片
bgLabel.setIcon(new ImageIcon("bgimage.png"));
bgLabel.setBounds(0,0,1000,800);
setResizable(false);//不能修改窗体大小
setTitle("打地鼠");
setBounds(300,100,1000,800);
mouses = new JLabel[9];
for (int i = 0; i < 9; i++) {
mouses[i] = new JLabel();
mouses[i].setSize(110,110);
mouses[i].setIcon(new ImageIcon("mouse.png"));
mouses[i].setVisible(false);
//监听器
mouses[i].addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
score++;
jtf.setText("您的得分是: "+score+"分");
repaint();
}
});
add(mouses[i]);
}
mouses[0].setLocation(285,140);
mouses[1].setLocation(515,140);
mouses[2].setLocation(745,140);
mouses[3].setLocation(285,310);
mouses[4].setLocation(515,310);
mouses[5].setLocation(745,310);
mouses[6].setLocation(285,470);
mouses[7].setLocation(515,470);
mouses[8].setLocation(745,470);
add(bgLabel);
setVisible(true);
new Thread(this).start();
}
public static void main(String[] args) {
Demo game = new Demo();
}
@Override
public void run() {
while(true){
try {
Thread.sleep(1200);
} catch (InterruptedException e) {
e.printStackTrace();
}
int pos = random.nextInt(9);//0-8
if(!mouses[pos].isVisible()){
mouses[pos].setVisible(true);
try {
Thread.sleep(1200);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(mouses[pos].isVisible()){
mouses[pos].setVisible(false);
}
}
}
}
}



