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

📄 listdemo.java

📁 《J2ME图形应用基础》第二章
💻 JAVA
字号:
/*
 * ListDemo.java
 *
 */

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

/**
 *
 * @author  Liu Bin
 * @version
 */
public class ListDemo extends MIDlet implements CommandListener {
    private Display display;
    
    //定义List菜单的内容
    private static String menuItems[] = {"带图标的List",
            "字体不同的List",
            "不执行任何操作",
            "MULTIPLE类型的List",
            "EXCLUSIVE类型的List"
    };
    
    //定义要使用的List
    private List comList;
    private List imgList;
    private List fontList;
    private List multipleList;
    private List exclusiveList;
    
    //定义使用的命令按钮
    private Command cmdBack;
    private Command cmdExit;
    private Command cmdAppend;
    private Command cmdDelete;
    private Command cmdDeleteAll;
    private Command cmdInsert;
    private Command cmdSelect;
    
    public ListDemo() {
        try {
            nbInit();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    private void nbInit() throws Exception {
        cmdBack = new Command("返回", Command.BACK, 1);
        cmdExit = new Command("退出", Command.EXIT, 0);
        cmdAppend = new Command("追加", Command.ITEM, 2);
        cmdDelete = new Command("删除", Command.ITEM, 2);
        cmdDeleteAll = new Command("全部删除", Command.ITEM, 2);
        cmdInsert = new Command("插入", Command.ITEM, 2);
        cmdSelect = new Command("选择", Command.SCREEN, 3);
        
        comList = new List("List功能演示", List.IMPLICIT, menuItems, null);
        comList.addCommand(cmdExit);
        
        imgList = new List("带图像的List功能演示", List.IMPLICIT);
        imgList.addCommand(cmdBack);
        
        fontList = new List("字体不同的List功能演示", List.IMPLICIT,
                menuItems, null);
        fontList.addCommand(cmdBack);
        
        multipleList = new List("MULTIPLE类型的List功能演示", List.MULTIPLE);
        multipleList.addCommand(cmdBack);
        
        exclusiveList = new List("EXCLUSIVE类型的List功能演示", List.EXCLUSIVE);
        exclusiveList.addCommand(cmdBack);
        
        //定义List数组
        List[] lists = {comList, imgList, fontList, multipleList,
                exclusiveList
        };
        
        for (int i=0; i< lists.length;i++) {
            lists[i].setSelectCommand(cmdSelect);
            lists[i].addCommand(cmdAppend);
            lists[i].addCommand(cmdDelete);
            lists[i].addCommand(cmdDeleteAll);
            lists[i].addCommand(cmdInsert);
            lists[i].setCommandListener(this);
        }
    }
    
    public void startApp() {
        display = Display.getDisplay(this);
        display.setCurrent(comList);
    }
    
    public void pauseApp() {
    }
    
    public void destroyApp(boolean unconditional) {
        notifyDestroyed();
    }
    
    /**
     * 处理命令按钮事件
     */
    public void commandAction(Command cmd, Displayable d) {
        if (!(d instanceof List )) {
            return;
        }
        
        if (cmd == cmdExit) {
            destroyApp(true);
        } else if (cmd == cmdBack) {
            display.setCurrent(comList);
        }  else if (cmd == cmdSelect) {
            List list = (List)d;
            
            /* 下面的判断方法适合条目不变的情况,
            switch(list.getSelectedIndex()) {
                case 0:
                    showImgList();
                    break;
                case 1:
                    showFontList();
                    break;
            }
             */
            int index = list.getSelectedIndex();
            if (list.getString(index) == menuItems[0]) {
                //带图标的List
                showImgList();
            } else if (list.getString(index) == menuItems[1]) {
                //字体不同的List
                showFontList();
            } else if (list.getString(index) == menuItems[3]) {
                //"MULTIPLE类型的List
                showMultipleList();
            } else if (list.getString(index) == menuItems[4]) {
                //EXCLUSIVE类型的List
                showExclusiveList();
            }
        } else if (cmd == cmdAppend) {
            List list = (List)d;
            list.append("追加条目" + (list.size()+1), null);
        } else if (cmd == cmdDelete) {
            //删除当前内容
            List list = (List)d;
            list.delete(list.getSelectedIndex());
        } else if (cmd == cmdDeleteAll) {
            //删除全部的内容
            List list = (List)d;
            list.deleteAll();
        } else if (cmd == cmdInsert) {
            //在但前位置插入条目
            List list = (List)d;
            list.insert(list.getSelectedIndex(),
                    "插入条目" + (list.size()+1), null);
        }
    }
    
    //显示带图标的List
    private void showImgList() {
        Image img1, img2, img3;
        try{
            if (imgList.size()<menuItems.length) {
                //清除原来的内容
                imgList.deleteAll();
                
                img1 = Image.createImage("/file.png");
                img2 = Image.createImage("/folder.png");
                img3 = Image.createImage("/color.png");
                
                Image[] imgs = {img1, img2, img3, img1, img3};
                
                for(int index = 0; index < menuItems.length; index++) {
                    imgList.append(menuItems[index], imgs[index]);
                }
            }
            display.setCurrent(imgList);
        }catch (Exception e) {
            System.out.println("显示带图像的List时出错: " + e.toString());
        }
    }
    
    //显示不同字体的List
    private void showFontList() {
        Font font1 = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN,
                Font.SIZE_MEDIUM);
        Font font2 = Font.getFont(Font.FACE_PROPORTIONAL,
                Font.STYLE_BOLD | Font.STYLE_ITALIC,
                Font.SIZE_SMALL);
        Font font3 = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_UNDERLINED,
                Font.SIZE_LARGE);
        
        fontList.setFont(0, font1);
        fontList.setFont(1, font2);
        fontList.setFont(2, font3);
        
        display.setCurrent(fontList);
    }
    
    //MULTIPLE类型的List
    private void showMultipleList() {
        multipleList.deleteAll();
        multipleList.append("选项1", null);
        multipleList.append("选项2", null);
        multipleList.append("选项3", null);
        display.setCurrent(multipleList);
    }
    
    //EXCLUSIVE类型的List
    private void showExclusiveList() {
        exclusiveList.deleteAll();
        exclusiveList.append("选项1", null);
        exclusiveList.append("选项2", null);
        exclusiveList.append("选项3", null);
        display.setCurrent(exclusiveList);
    }
}

⌨️ 快捷键说明

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