人生第一个Java项目

代码如下:

package PalyMouse;

import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

public class Mouse extends JFrame implements Runnable{

	//积分
	private int num = 0;
	//背景图片
	private JLabel back;
	//九个老鼠
	private JLabel[] mouses;
	//图片
	private ImageIcon imageMouse;
	//积分本
	private JLabel jtf;
	
	public Mouse()
	{
		//不能手动修改大小
		this.setResizable(false);
		
		//this.getContentPane().setLayout(null);
		
		//设置标题
		this.setTitle("打地鼠游戏");
		
		this.setVisible(true);
		
		//设置位置和大小
		this.setBounds(300, 100, 800, 480);
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		//初始化背景
		back = new JLabel();
		
		ImageIcon icon = new ImageIcon(this.getClass().getResource("1.jpg"));
		
		//把图片添加到back
		back.setIcon(icon);
		
		//设置背景图片
		back.setBounds(0,0,800,480);
				
		//初始化积分板
		jtf = new JLabel();
		jtf.setBounds(500,2, 300, 30);
		jtf.setFont(new Font("", 20, 20));
		jtf.setForeground(Color.BLACK);
		jtf.setText("您的得分是:    ");
		
		
		//初始化老鼠
		imageMouse = new ImageIcon(this.getClass().getResource("2.png"));
		mouses = new JLabel[6];	
		for (int i = 0; i < 6; i++)
		{
			mouses[i] = new JLabel();
			mouses[i].setSize(imageMouse.getIconWidth(), imageMouse.getIconHeight());
			//mouses[i].setIcon(imageMouse);
			mouses[i].addMouseListener(new MouseListener()
			{
				
				@Override
				public void mouseReleased(MouseEvent e) 
				{
					
				}
				
				@Override
				public void mousePressed(MouseEvent e)
				{
					
				}
				
				@Override
				public void mouseExited(MouseEvent e) 
				{
					
				}
				
				@Override
				public void mouseEntered(MouseEvent e)
				{
					
				}
				
				@Override
				public void mouseClicked(MouseEvent e)
				{
					Object object = e.getSource();
					if(object instanceof JLabel)
					{
						JLabel label = (JLabel)object;
						
						if(label.getIcon() != null)
						{
							num++;
							jtf.setText("您的得分是:" + num + "分");
						}
						label.setIcon(null);
					}
				}
			});


			this.add(mouses[i]);
		}
		
		//设置鼠标
		this.setCursor(Toolkit.getDefaultToolkit().createCustomCursor(Toolkit.getDefaultToolkit().getImage("src/PalyMouse/3.png"), new Point(), "myself"));
		
		//设置老鼠坐标
		mouses[0].setLocation(80,30);
		mouses[1].setLocation(320,30);
		mouses[2].setLocation(560,30);
		mouses[3].setLocation(80,270);
		mouses[4].setLocation(320,270);
		mouses[5].setLocation(560,270);
		
		//添加到JFrame
		this.add(jtf);
		this.add(back);
		
	}
	
	//闪烁
	@Override
	public void run() 
	{
		while(true)
		{
			try
			{
				Thread.sleep(500);
				int index = (int)(Math.random()*10);
				if(index >= 6)
				{
					index = 3;
				}
				//判断是否点击
				if(mouses[index].getIcon() == null)
				{
					mouses[index].setIcon(imageMouse);
					Thread.sleep(800);
					
					if(mouses[index].isShowing())
					{
						mouses[index].setIcon(null);
					}
				}
			} 
			catch (InterruptedException e) 
			{
				System.out.println("出错啦");
			}
			
			
		}
	}
	
	public static void main(String[] args) 
	{
		Mouse m = new Mouse();
		Thread t1 = new Thread(m);
		t1.start();
	}
}


目前只会Java基础,也就只能用swing来写第一个小项目了(感觉安卓的监听机制要比swing强很多)

主要以用到的知识:swing编程,监听机制,多线程编程。

项目难点在于怎么制造出闪烁的特点:

这里我采用多线程中的sleep方法,如果未被击中,则小老鼠一直存在,如果击中,将代表小老鼠的Jlable设置位null

那么,如何判断是否击中的是老鼠呢?

swing监听机制中,点击鼠标会返回一个object对象,只需要判断对象是否属于JLable就行

代码如下:

				@Override
				public void mouseClicked(MouseEvent e)
				{
					Object object = e.getSource();
					if(object instanceof JLabel)
					{
						JLabel label = (JLabel)object;
						
						if(label.getIcon() != null)
						{
							num++;
							jtf.setText("您的得分是:" + num + "分");
						}
						label.setIcon(null);
					}
				}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值