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

📄 menucanvas.java

📁 j2me简单实例,j2me教程加源码,希望大家喜欢
💻 JAVA
字号:
package com.j2medev.chapter6;

import javax.microedition.lcdui.*;

public class MenuCanvas extends Canvas{
    
    //selected变量标记了焦点位置
    private int selected = 0;
    private int preferWidth = -1;
    private int preferHeight = -1;
    private MessageMIDlet midlet = null;
    public static final int[] OPTIONS = {0,1,2,3};
    public static final String[] LABELS={"New Picture","My Outbox","My Inbox","Exit"};
    
    public MenuCanvas(MessageMIDlet _midlet) {
        midlet = _midlet;
        selected = OPTIONS[0];
        //计算菜单选项的长度和高度值
        Font f = Font.getDefaultFont();
        preferWidth  = getWidth();
        preferHeight = getHeight()/LABELS.length;
    }
    
    public void paint(Graphics g){
        //清除屏幕
        int color = g.getColor();
        g.setColor(0xFFFFFF);
        g.fillRect(0,0,getWidth(),getHeight());
        g.setColor(color);
        //计算整个菜单的高度,宽度和(x,y)
        int rectWidth = preferWidth;
        int rectHeight = preferHeight * LABELS.length;
        int x = 0;
        int y = 0;
        //画矩形
        g.drawRect(x,y,rectWidth,rectHeight);
        for(int i = 1;i<LABELS.length;i++){
            g.drawLine(x,y+preferHeight*i,x+rectWidth,y+preferHeight*i);
        }
        //画菜单选项,并根据selected的值判断焦点
        for(int j = 0;j<LABELS.length;j++){
            if(selected == j){
                g.setColor(0x6699cc);
                
            }else{
                g.setColor(0xcccccc);
            }
            g.fillRect(x+1,y+j*preferHeight+1,rectWidth-1,preferHeight-1);
            g.setColor(color);
            g.drawString(LABELS[j],x+rectWidth/2,y+j*preferHeight+preferHeight/2,Graphics.HCENTER|Graphics.BASELINE);
        }
    }
    
    public void keyPressed(int keyCode){
        //根据用户输入更新selected的值,并重新绘制屏幕
        int action = this.getGameAction(keyCode);
        switch(action){
            case Canvas.FIRE:
                midlet.setCurrent(selected);
                break;
            case Canvas.DOWN:
                selected = (selected+1)%4;
                break;
            case Canvas.UP:{
                if(--selected < 0){
                    selected+=4;
                }
                break;
            }
            default:
                break;
        }
        repaint();
        serviceRepaints();
    }
}

⌨️ 快捷键说明

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