j2me 菜单设计方案1

//文件名 SimpleCustomMenu.java

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;

public class SimpleCustomMenu extends MIDlet implements CommandListener {

  Display display;
  Display pauseDisplay;
  boolean isSplash = true;
  MenuScreen menuScreen;

  public SimpleCustomMenu() {
    MenuScreen menuScreen = new MenuScreen();
    display = Display.getDisplay(this);
    display.setCurrent(menuScreen);   
  } 

  protected void startApp() throws MIDletStateChangeException   {
  } 
 
  protected void pauseApp() {  }
  protected void destroyApp (boolean flag) throws MIDletStateChangeException {} 
 
  public void commandAction (Command cmd, Displayable dis) {
   
  }
}

//文件名 MenuScreen.java

import javax.microedition.lcdui.*;

public class MenuScreen extends Canvas implements Runnable {  
 
  static final Font lowFont  = Font.getFont (Font.FACE_MONOSPACE, Font.STYLE_PLAIN, Font.SIZE_SMALL); 
  static final Font highFont = Font.getFont (Font.FACE_MONOSPACE, Font.STYLE_BOLD, Font.SIZE_MEDIUM); 
 
  static final int lowColor  = 0x000000FF;
  static final int highColor = 0x00FF0000;
  static final int highBGColor = 0x00CCCCCC;
 
  static int width;
  static int height;
 
  static int startHeight;
 
  static final int spacing = highFont.getHeight()/2;
 
  static final int NEW_GAME = 0;
  static final int HIGH_SCORE = 1;
  static final int SETTINGS = 2;
  static final int HELP = 3;
  static final int ABOUT = 4;
  static final int MENU_ITEM_COUNT = 5;
  static String[] mainMenu = new String[MENU_ITEM_COUNT];
 
  static int menuIdx;
 
  Thread menuThread;
    
  public MenuScreen() {
    width = getWidth();
    height = getHeight();

    mainMenu[0] = "开始新游戏";
    mainMenu[1] = "显示得分";
    mainMenu[2] = "设置";
    mainMenu[3] = "帮助";
    mainMenu[4] = "关于";   
   
    startHeight = (highFont.getHeight() * mainMenu.length) + ((mainMenu.length-1) * spacing);
    startHeight = (height - startHeight) / 2; 
   
    menuIdx = 0;
   
    menuThread = new Thread(this);
    menuThread.start();      
  }
 
  public void run() {
    while(true) {
      repaint();    
    }   
  }
 
  public void paint(Graphics g) {
     
    g.setColor(0x00FFFFFF);
    g.fillRect(0,0,width,height);
   
   
    for (int i=0; i<mainMenu.length; i++) {
     
      if (i==menuIdx) {
       g.setColor(highBGColor);
       g.fillRect(0,startHeight + (i*highFont.getHeight()) + spacing,width,highFont.getHeight());
        g.setFont(highFont);
        g.setColor(highColor); 
        g.drawString(mainMenu[i],(width - highFont.stringWidth(mainMenu[i])   ) / 2,startHeight + (i*highFont.getHeight()) + spacing,20);       
      } else {
        g.setFont(lowFont);
        g.setColor(lowColor); 
        g.drawString(mainMenu[i],(width - lowFont.stringWidth(mainMenu[i])   ) / 2,startHeight + (i*highFont.getHeight()) + spacing,20);
      }
    }
  }
 
  protected void keyPressed (int code) {
    if (getGameAction(code) == Canvas.UP && menuIdx - 1 >= 0) {     
      menuIdx--;      
    } else if (getGameAction(code) == Canvas.DOWN && menuIdx + 1 < mainMenu.length) {
      menuIdx++;        
    } else if (getGameAction(code) == Canvas.FIRE) {
       
       switch(menuIdx) {
         case NEW_GAME:   System.out.println("开始新游戏"); break;
         case HIGH_SCORE: System.out.println("显示得分"); break;
         case SETTINGS:   System.out.println("设置"); break;
         case HELP:       System.out.println("帮助"); break;
         case ABOUT:      System.out.println("关于"); break;       
       }
    }
  } 
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值