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

📄 menu.java

📁 J2me类windows 菜单的实现,以及拼图游戏
💻 JAVA
字号:
//J2ME 中实现仿windows菜单
//构造不同的菜单项,并把整个菜单组的所有元素画在画板上
//翁荣建
//2005-06-10
//Menu.java
package menu;
import javax.microedition.lcdui.*;
public class Menu  {

  public static Menu instance;
  private int width;//宽
  private int height;//高共有3种值分别是4像素,3像素,18像素
  private Image image;//菜单中的图标
  private String Title;//菜单的标题
  public boolean enabled = true;
  public boolean isLine  = false;
  public Menu() {//没要参数的构造函数,直线
      this.image  = null;
      this.Title  = null;
      this.isLine = true;
  }
  public Menu(String Title){//参数为标题,没有图标的菜单项
      this.Title = Title;
  }
  public Menu(Image image,String Title){//参数为图片和标题,有图标的菜单项
      this.image = image;
      this.Title = Title;
  }
  public void drawStartMenu(Graphics g, int x, int y, int width) { //height=4
      //画菜单的最上面一部分
      this.height = 4;
      this.width  = width;
      g.setGrayScale(255);
      g.fillRect(x, y, width, 4);
      g.setGrayScale(175);
      g.drawLine(x, y, x + width, y);
      g.drawLine(x + 3, y + 3, x + width - 3, y + 3);
      g.drawLine(x, y, x, y + 3);
      g.setGrayScale(0);
      g.drawLine(x + width, y, x + width, y + 3);
      g.setGrayScale(40);
      g.drawLine(x + width - 1, y + 1, x + width - 1, y + 3);
      g.setGrayScale(120);
      g.drawLine(x + width - 2, y + 2, x + width - 2, y + 3);

    }

    public void drawEndMenu(Graphics g, int x, int y, int width) { //height=4
      //画菜单的最下面一部分
        this.height = 4;
        this.width  = width;
        g.setGrayScale(255);
        g.fillRect(x, y, width, 4);
        g.setGrayScale(175);
        g.drawLine(x, y, x, y + 3);
        g.drawLine(x + 3, y, x + width - 3, y);
        g.setGrayScale(0);
        g.drawLine(x + width, y, x + width, y + 3);
        g.drawLine(x, y + 3, x + width, y + 3);
        g.setGrayScale(40);
        g.drawLine(x + width - 1, y, x + width - 1, y + 2);
        g.drawLine(x + 1, y + 2, x + width - 1, y + 2);
        g.setGrayScale(120);
        g.drawLine(x + width - 2, y, x + width - 2, y + 1);
        g.drawLine(x + 2, y + 1, x + width - 2, y + 1);
    }

    public void drawMenu(Graphics g, int x, int y, int width) { //height=3
      //画菜单项为直线的部分
        this.height = 3;
        this.width  = width;
        g.setGrayScale(255);
        g.fillRect(x, y, width, 3);
        g.setGrayScale(175);
        g.drawLine(x, y, x, y + 3);
        g.drawLine(x + 3, y, x + 3, y + 3);
        g.setGrayScale(0);
        g.drawLine(x + width, y, x + width, y + 3);
        g.setGrayScale(40);
        g.drawLine(x + width - 1, y, x + width - 1, y + 3);
        g.setGrayScale(120);
        g.drawLine(x + width - 2, y, x + width - 2, y + 3);
        //middle line
        g.drawLine(x + 3, y + 1, x + width-4, y + 1);
    }

    public void drawMenu(Graphics g,int x, int y, int width,
                         boolean select,Font font)
    {//height=18
      //画菜单项
        g.setFont(font);
        this.height    = 18;
        this.width     = width;
        int fontheight = font.getHeight();
        g.setGrayScale(255);
        g.fillRect(x, y, width, 18);
        if(this.enabled)//菜单要处于可用态
        {    if (select)
             {//菜单项被选中,就画一个兰色的背景框
                g.setColor(51,94,168);
                g.fillRect(x + 3, y + 1, width - 6, 16);
             }//end of if
        }//end of if
        g.setGrayScale(175);
        g.drawLine(x, y, x, y + 18);
        g.drawLine(x + 3, y, x + 3, y + 18);
        g.setGrayScale(0);
        g.drawLine(x + width, y, x + width, y + 18);
        g.setGrayScale(40);
        g.drawLine(x + width - 1, y, x + width - 1, y + 18);
        g.setGrayScale(120);
        g.drawLine(x + width - 2, y, x + width - 2, y + 18);
        g.setGrayScale(0);//菜单项没被选中,前景色为黑
        if (select)
            g.setGrayScale(255);//菜单项被选中,前景色为白
        if (!this.enabled)
            g.setGrayScale(200);
        g.drawString(Title, x + 5 + 14, y + (18-fontheight)/2, Graphics.TOP | Graphics.LEFT);
        if(image!=null)//如果图片不为NULL的就把图片画出来
        {    try
             {
             g.drawImage(image, x + 5, y + 3, g.TOP | g.LEFT);}
             catch(Exception ex)
             {}
        }
      }

//得到菜单项中各种元素的属性
    public int getWidth()
    {return width;}
    public int getHeight()
    {return height;}
    public int getStartMenuHeight()
    {return 4;}
    public int getEndMenuHeight()
    {return 4;}
    public void setEnabled(boolean enabled)
    {this.enabled=enabled;
    }
    public boolean getEnabled()
    {return this.enabled;}

}




⌨️ 快捷键说明

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