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

📄 gamemenu.java

📁 J2ME中的一个简单二级菜单代码
💻 JAVA
字号:
import java.util.Enumeration;
import java.util.Hashtable;

import javax.microedition.lcdui.Graphics;

public class GameMenu {
	public boolean showMenu = false;
	public int mWidth = 60;
	public int mHeight = 20;
	public Hashtable F_menuItem;
	public Hashtable S_menuItem;
	public int select1 = 0;
	public int select2 = 0;
	public MenuItem m1 = new MenuItem(0,"商店",null,false);
	public MenuItem m2 = new MenuItem(1,"充值",null,true);
	public MenuItem m3 = new MenuItem(2,"人物",null,true);
	public MenuItem m4 = new MenuItem(3,"社交",null,false);
	public MenuItem m5 = new MenuItem(4,"系统",null,false);
	public MenuItem m6 = new MenuItem(5,"黄金充值",m2,false);
	public MenuItem m7 = new MenuItem(6,"银币充值",m2,false);
	public MenuItem m8 = new MenuItem(7,"属性",m3,false);
	public MenuItem m9 = new MenuItem(8,"装备",m3,false);
	public MenuItem m10 = new MenuItem(9,"背包",m3,false);
	GameMenu(){
		if(F_menuItem == null){
			F_menuItem = new Hashtable();
		}
		this.addMenu(m1);
		this.addMenu(m2);
		this.addMenu(m3);
		this.addMenu(m4);
		this.addMenu(m5);
		updateMenuattribute();
	}
	public void showMenu(Graphics g){                  //显示菜单
		if(showMenu){
			drawMenuItem(g);
		}
	}
	public void addMenu(MenuItem mi){                             //增加菜单
		F_menuItem.put(new Integer(mi.menuid),mi);
	}
	public void drawMenuItem(Graphics g){               //画菜单
		if(select1>F_menuItem.size()-1){
			select1 = 0;
		}
		if(select1<0){
			select1 = F_menuItem.size()-1;
		}
		if(S_menuItem!=null){
			drawMenu(g,select2,S_menuItem);
		}
		if(F_menuItem!=null){
			drawMenu(g,select1,F_menuItem);
		}
	}
	public void drawMenu(Graphics g,int selectedid,Hashtable f_m){
        Enumeration menus = f_m.elements();//画一个菜单
		int menunum = f_m.size();
		int i = menunum - 1;
		while(menus.hasMoreElements()){
			MenuItem menuitem = (MenuItem) menus.nextElement();
			if(selectedid == i){
				g.setColor(0xff0000);
				g.fillRect(menuitem.offx,menuitem.offy,mWidth,mHeight);
				g.setColor(0x000000);
				g.drawRect(menuitem.offx,menuitem.offy,mWidth,mHeight);
			}else{
				g.setColor(0x00ff00);
				g.fillRect(menuitem.offx,menuitem.offy,mWidth,mHeight);
				g.setColor(0x0000ff);
				g.drawRect(menuitem.offx,menuitem.offy,mWidth,mHeight);
			}
                g.setColor(0x0000ff);
                g.drawString(menuitem.menustr,menuitem.offx+5,menuitem.offy+3, 0);
            i--;
			menuitem = null;
		}
		menus = null;
	}
	public void updateMenuattribute(){                //计算菜单的位置
		Enumeration menus = F_menuItem.elements();
        int i = 0;
		int menunum = F_menuItem.size();
        //按从大到小排列
        int nButton = (menunum-1)*mHeight+5;
		while(menus.hasMoreElements()){
			MenuItem menuitem = (MenuItem) menus.nextElement();
			MenuItem mparent = menuitem.MenuParent;
			if(mparent == null){             //主菜单
				menuitem.offx = 5;
				menuitem.offy = nButton - i*mHeight;
			}else{                           //子菜单
				menuitem.offx = 60;
	            int offy0 = (mparent.offy + (menunum / 2) * mHeight);
	            menuitem.offy = (offy0 > nButton ? nButton : offy0) - i * mHeight - 3;
			}
			i++;
		}
        menus = null;
	}
	public MenuItem getSelectMenuItem(){                       //得到现在的菜单焦点
		Enumeration menus = F_menuItem.elements();
        int menunum = F_menuItem.size(); // 菜单个数
	    int i = menunum - 1;
        while(menus.hasMoreElements()){
            MenuItem mi = (MenuItem) menus.nextElement();
            if(this.select1 == i){
                return mi;
            }
            i--;
        }
        return null;
	}
    public void closeMenu(){
        showMenu = false;
        F_menuItem = null;
        S_menuItem = null;
    }
    public void doMenuWork(){
        MenuItem menuitem = this.getSelectMenuItem();
        if(menuitem == null){
            return;
        }
        if(menuitem.hasIssue){
            S_menuItem = new Hashtable();
            Enumeration menus = F_menuItem.elements();
            while(menus.hasMoreElements()){
                MenuItem mi = (MenuItem) menus.nextElement();
                S_menuItem.put(new Integer(mi.menuid),mi);
            }
            menus = null;
            select2 = select1;
        }
        if(menuitem == m1){

        }
        if(menuitem == m2){
            updatam2();
        }
        if(menuitem == m3){
            updatam3();
        }
        if(menuitem == m4){

        }
        if(menuitem == m5){

        }
    }
    public void updatam2(){
        F_menuItem.clear();
        this.addMenu(m6);
        this.addMenu(m7);

        select1 = 0;
        updateMenuattribute();
    }
    public void updatam3(){
        F_menuItem.clear();
        this.addMenu(m7);
        this.addMenu(m8);
        this.addMenu(m9);

        select1 = 0;
        updateMenuattribute();
    }
    public void updataMainMenu(){
        if(F_menuItem == null){
            F_menuItem = new Hashtable();
        }
        F_menuItem.clear();
        this.addMenu(m1);
        this.addMenu(m2);
        this.addMenu(m3);
        this.addMenu(m4);
        this.addMenu(m5);

        select1 = 0;
        select2 = 0;
        S_menuItem = null;
        updateMenuattribute();
    }
	public void menuKeyPressed(int keyCode){           //菜单按键
		switch(keyCode){
		case -6:
            showMenu = !showMenu;
            if(showMenu){
                updataMainMenu();
            }else{
                closeMenu();
            }
			break;
		case -7:
			break;
		case -1:
			select1--;
			break;
		case -2:
			select1++;
			break;
        case -3:
            if(S_menuItem !=null){
                int id = select2;
                S_menuItem = null;
//                Enumeration menus = F_menuItem.elements();
//                while(menus.hasMoreElements()){
//                    MenuItem mi = (MenuItem) menus.nextElement();
//                }
                updataMainMenu();
                select1 = id;
            }
            break;
        case -4:
            MenuItem mi = this.getSelectMenuItem();
            if(mi.hasIssue&&mi!=null){
                menuKeyPressed(-5);
                System.out.println("有子菜单");
            }else{
                System.out.println("跳入相应的功能");
            }
            break;
        case -5:
            doMenuWork();
            break;
		}
	}
}

⌨️ 快捷键说明

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