⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menuframe.java

📁 BravePiglet.rar 勇敢的猪Java游戏 由本人原创
💻 JAVA
字号:
package com.lovo.pig.view;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Rectangle;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;

import javax.swing.JFrame;

import com.lovo.pig.util.Images;
import com.lovo.pig.util.Musics;

public class MenuFrame extends JFrame implements Runnable{
	private static final long serialVersionUID = -4600621043345458437L;
    //图片工具类实例
	private Images images;
	//音乐播放类实例
	private Musics musics;
	//后台图像
	private Image imgOffScreen;
	//后台图像画笔
	private Graphics drawOffScreen;
	//菜单项数组
	Image[] menu;
	
	//鼠标是否进入图像按钮区域
	private boolean overStart = false;
	private boolean overOptions = false;
	private boolean overHelp= false;
	private boolean overExit= false;
	//鼠标是否还停留在按钮区域内(自上次移入后还没移出去过)
	boolean stayStart = false;
	boolean stayOptions = false;
	boolean stayHelp = false;
	boolean stayExit = false;
	
	public MenuFrame(){
		setSize(800,627);
		setResizable(false);
		setLocationRelativeTo(null);
		setTitle("Brave Pig");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		images = Images.getImages();
		menu = images.getImgMenu();
		musics = Musics.getMusic();
		this.setVisible(true);
		
		//创建后台图片
		imgOffScreen = this.createImage(800, 627);
		drawOffScreen = imgOffScreen.getGraphics();
		
		//监视鼠标移动
		this.addMouseMotionListener(new MouseMotionAdapter(){
			public void mouseMoved(MouseEvent e){
				checkMouseOver (e);
			}
		});
		//监视鼠标点击
		this.addMouseListener(new MouseAdapter(){
			public void mouseClicked(MouseEvent e){
				checkMouseClick(e);
			}
		});
		new Thread(this).start();
	}
    
	public void paint(Graphics g){
		if(drawOffScreen != null){
			//绘制背景
			drawOffScreen.drawImage(images.getImgMenuStage(), 0, 27, null);
			//绘制菜单项
			drawMenuItem(drawOffScreen,0,overStart);
			drawMenuItem(drawOffScreen,1,overOptions);
			drawMenuItem(drawOffScreen,2,overHelp);
			drawMenuItem(drawOffScreen,3,overExit);
			//前台绘制
			g.drawImage(imgOffScreen , 0, 0, null);
		}
	}
	
	@Override
	public void run() {
		while(true){
			repaint();
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
	
	//绘制单个菜单项
	private void drawMenuItem(Graphics g,int index,boolean mouseOver){
		int posY = index;//用来计算图片相对位置
		if(!mouseOver){//鼠标经过,绘制偶数下标图像
			index *= 2;
		}else{//鼠标移走,绘制奇数下标图像
			index  = index*2 + 1;
		}
		g.drawImage(menu[index], 50, posY * 105 + 200,null);
	}

	/**
	 * 检查鼠标是否经过按钮
	 * @param x
	 * @param y
	 * @param img
	 */
	private void checkMouseOver (MouseEvent e){
		int index;
		//鼠标不再任何一个按钮区域内
		boolean out = true;

		for(index = 0;index<4;index++){
			Rectangle rect = new Rectangle(50,index*105 + 200,200,100);
			if(rect.contains(e.getPoint())){//如果鼠标所在点被按钮图像所包含
				out  = false;
				if(index== 0){//start按钮
					if(!stayStart){
						musics.playOverMenu();
					}
					overStart = true;
					overOptions = false;
					overHelp = false;
					overExit =  false;
					stayStart = true;
					stayOptions = false;
				    stayHelp = false;
				    stayExit = false;
				}else if(index == 1){//Options按钮
					if(!stayOptions){
						musics.playOverMenu();
					}
					overOptions = true;
					overStart = false;
					overHelp = false;
					overExit =  false;
					stayStart = false;
					stayOptions = true;
				    stayHelp = false;
				    stayExit = false;
				}else if(index == 2){//Help按钮
					if(!stayHelp){
						musics.playOverMenu();
					}
					overHelp = true;
					overStart = false;
					overOptions = false;
					overExit =  false;
					stayStart = false;
					stayOptions = false;
				    stayHelp = true;
				    stayExit = false;
				}else if(index == 3){//Exit按钮
					if(!stayExit){
						musics.playOverMenu();
					}
					overExit = true;
					overHelp = false;
					overStart = false;
					overOptions = false;
					stayStart = false;
					stayOptions = false;
				    stayHelp = false;
				    stayExit = true;
				}
		}
	 }
	if(out){//鼠标不再任何一个按钮区域内时
		overExit = false;
		overHelp = false;
		overStart = false;
		overOptions = false;
		stayStart = false;
		stayOptions = false;
	    stayHelp = false;
	    stayExit = false;
	}
   }
	
	/**
	 * 检查鼠标点击按钮
	 * @param e
	 */
	private void checkMouseClick(MouseEvent e){
		int index = 0;
		for(index = 0;index<4;index++){
			Rectangle rect = new Rectangle(50,index*105 + 200,200,100);
			if(rect.contains(e.getPoint())){//如果鼠标所在点被按钮图像所包含
				this.dispose();
				if(index == 0){
					new MainFrame();//游戏主界面
				}else if(index == 1){
					new OptionFrame();
				}else if(index == 2){
					new HelpFrame();
				}else if(index == 3){
					System.exit(0);
				}
			  }
			}
	}
	
	public static void main(String [] args){
		new MenuFrame();
		
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -