javame封装菜单

  • F5_525734
    了解作者
  • 35.1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-05-16 01:58
    上传日期
刚刚开始学习javame 弄了好几天封装了个菜单,第一篇文章,谢谢大家捧场
封装menu.rar
内容介绍
package com.ui.menu; import java.util.Vector; import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Graphics; import com.CONST; public class Menu { public static int itemWidth=80; public static int itemHeigth=20; public boolean isShow= false; private Canvas canvas; private Vector vector; private int selectedIndex; private ParentItem pItem=null; public Menu(Canvas canvas){ vector= new Vector(); this.canvas=canvas; } public void addItem(Item i){ this.vector.addElement(i); this.setSelectedIndex(); } /* 菜单的绘制事件 * */ public void paint(Graphics g,int x,int y){ this.init(g); if (this.isShow){ ((Item)vector.elementAt(this.selectedIndex)).setIsActivity(true); int oldC = g.getColor(); g.setColor(0xffffff); g.fillRect(0, canvas.getHeight()-Menu.itemHeigth, Menu.itemWidth, Menu.itemHeigth); g.setColor(oldC); paintItems(g,x,y); } } private void init(Graphics g){ g.setColor(CONST.DEFAULTFONTCOLOR); g.drawLine(0,canvas.getHeight()-20, canvas.getWidth(),canvas.getHeight()-20 ); g.drawRect(0,canvas.getHeight()-20, 80, 20); } /* 绘制菜单选项items的函数 * @g 画笔*/ private void paintItems(Graphics g,int x ,int y) { g.setColor(CONST.BACKCOLOR); g.fillRect(0,canvas.getHeight()-Menu.itemHeigth, Menu.itemWidth,Menu.itemHeigth); g.setColor(CONST.DEFAULTFONTCOLOR); g.drawRect(0,canvas.getHeight()-Menu.itemHeigth, Menu.itemWidth,Menu.itemHeigth); g.drawString("选择", Menu.itemWidth/2,canvas.getHeight()-20, Graphics.TOP|Graphics.HCENTER); int itemX,itemY; for (int i=0;i< vector.size();i++){ itemX=x; itemY=y-Menu.itemHeigth*(i+1); ((Item) vector.elementAt(i)).paint(g,itemX,itemY); } } /* 获得item的方法 * */ public Item getItem(int selected){ return ((Item)(vector.elementAt(selected))); } //菜单响应按键事件 public void action(int key,int action){ if(pItem!=null&&pItem.getSubMenu().isShow){ // 如果子菜单是存在的,则把事件向下传递 pItem.getSubMenu().action(key, action); } else if(action==Canvas.LEFT){ if (this.isShow){ this.close(); } } else if(action==Canvas.RIGHT){//选中的项有二级菜单,点击右导航键 this.rightKeyAction(); } else if(action == Canvas.UP){ this.upKeyAction(); } else if(action==Canvas.DOWN){ this.downKeyAction(); } else if(action==Canvas.FIRE){ this.fireKeyAction(key,action); } else if (key==CONST.RIGHTSOFTKEY){ this.isShow=true; for (int i=0;i<vector.size();i++){ ((Item)vector.elementAt(i)).setIsActivity(false); } ((Item)vector.elementAt(this.selectedIndex)).setIsActivity(true); } else if (key==CONST.LEFTSOFTKEY){ this.isShow=false; for (int i=0;i<vector.size();i++){ ((Item)vector.elementAt(i)).setIsActivity(false); } this.close(); } canvas.repaint(); } /* 点击向上的按键响应的事件 * */ private void upKeyAction(){ /* 把前一个选项设置为没有选中 * 把后一个选项设置为选中状态 * */ if(this.isShow){ ((Item)vector.elementAt(this.selectedIndex)).setIsActivity(false); this.selectedIndex++; if (this.selectedIndex==vector.size()) this.selectedIndex=0; ((Item)vector.elementAt(this.selectedIndex)).setIsActivity(true); } } /* 点击向下的按键响应的事件 * */ private void downKeyAction(){ /* 把前一个选项设置为没有选中 * 把后一个选项设置为选中状态 * */ if(this.isShow){ ((Item)vector.elementAt(this.selectedIndex)).setIsActivity(false); this.selectedIndex--; if (this.selectedIndex<0) this.selectedIndex=vector.size()-1; ((Item)vector.elementAt(this.selectedIndex)).setIsActivity(true); } } /* 点击向右的按键响应的事件 * */ private void rightKeyAction(){ if(this.isShow){ if (((Item)vector.elementAt(this.selectedIndex))instanceof ParentItem&& this.isShow){ // 若当前选中的项为parentItem类型的 pItem=((ParentItem)vector.elementAt(this.selectedIndex)); pItem.getSubMenu().setIsShow(true); } } } /* 点击确认按键响应的事件 * */ private void fireKeyAction(int key,int action){ //((Item)vector.elementAt(this.selectedIndex)).onAction(key, action); if (this.isShow){ if (pItem!= null && pItem.getSubMenu().isShow){ pItem.getSubMenu().action(key, action); } else{ ((Item)vector.elementAt(this.selectedIndex)).onAction(key, action); } } } public void setIsShow(boolean isShow) { this.isShow=isShow; } private void setSelectedIndex() { ((Item)vector.elementAt(this.selectedIndex)).setIsActivity(false); this.selectedIndex = vector.size()-1; } protected void close(){ this.isShow=false; this.setSelectedIndex(); } }
评论
    相关推荐
    • JavaME贪吃蛇工程
      JavaME贪吃蛇工程
    • javaME俄罗斯方块
      javaMe 俄罗斯方块,无任何素材,纯逻辑代码版
    • JavaME+API
      javame的唯一参考手册。因唯一,故而可贵。不信的话,先下下其它便宜的或免费的。 以下是JavaMe所设计的全部的包: MID Profile All Classes Packages java.io java.lang java.util javax.microedition.io ...
    • JavaME开发实例
      javame开发的各种实例:寻找最短路径、画图、地图设置、Gps设置等等
    • javaMe 电话本
      实现javaMe应用于手机上的电话本功能,进行电话的插入、删除等功能。
    • javaME API
      javaME开发必备神器!
    • JavaMe示例演示
      JavaMe示例演示 javame源码 专门供学习参考
    • javaME教程
      java的ppt教程,主要是教导j2me开发,可进一步开发安卓
    • JavaME课件ppt
      JavaME上课所用的课件ppt,有兴趣的可以看看
    • SIM800C_MQTT.rar
      使用SIM800C模块,使用MQTT协议,连接中国移动onenet平台,能实现数据的订阅、发布、存储等