📄 gamemenu.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 + -