基于面向对象编程的列表管理

原创 2008年09月28日 22:52:00

import javax.microedition.lcdui.Alert;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Choice;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.List;
import javax.microedition.lcdui.TextBox;
import javax.microedition.lcdui.TextField;
import javax.microedition.midlet.MIDlet;

public class Exec extends MIDlet {
        Display display;
        MainForm mainForm;

        public Exec() {
                mainForm = new MainForm("表单", this);
                display = Display.getDisplay(this);
        }

        public void startApp() {
                display.setCurrent(mainForm);
        }

        public void pauseApp() {
                display.setCurrent(null);
        }

        public void destroyApp(boolean unconditional) {
        }

        public Display getDisplay() {
                return display;
        }
}

class MainForm extends Form implements CommandListener {
        Command cmd1 = new Command("退出", Command.BACK, 1);
        Command cmd2 = new Command("显示", Command.OK, 1);
        Exec parent;
        RecordList recordList;

        public MainForm(String title, Exec parent) {
                super(title);
                this.parent = parent;
                recordList = new RecordList("主界面", parent);
                addCommand(cmd1);
                addCommand(cmd2);
                setCommandListener(this);
        }

        public void commandAction(Command c, Displayable arg1) {
                if (c == cmd1) {
                        parent.destroyApp(false);
                        parent.notifyDestroyed();
                } else if (c == cmd2) {
                        parent.getDisplay().setCurrent(recordList);
                }
        }
}

class RecordList extends List implements CommandListener {
        Command cmdAppend = new Command("追加于后", Command.OK, 1);
        Command cmdInsert = new Command("插入于前", Command.OK, 1);
        Command cmdSelect = new Command("查看", Command.BACK, 1);
        Exec parent;
        NewTextBox newTextBox;
        BrowseTextBox browseTextBox;
        InfoAlert infoAlert = new InfoAlert();

        public RecordList(String title, Exec parent) {
                super(title, Choice.IMPLICIT);
                this.parent = parent;
                newTextBox = new NewTextBox("信息", 100, parent, this);
                browseTextBox = new BrowseTextBox("内容", 100, parent, this);
                addCommand(cmdAppend);
                addCommand(cmdInsert);
                addCommand(cmdSelect);
                setCommandListener(this);
        }

        public void commandAction(Command c, Displayable arg1) {
                if (c == cmdAppend || c == cmdInsert) {
                        newTextBox.setString("");
                        if (c == cmdAppend)
                                newTextBox.setFlag("after");
                        else
                                newTextBox.setFlag("before");
                        parent.getDisplay().setCurrent(newTextBox);
                } else if (c == cmdSelect) {
                        if (browseTextBox.update())
                                parent.getDisplay().setCurrent(browseTextBox);
                        else
                                parent.getDisplay().setCurrent(infoAlert);
                }
        }
}

class NewTextBox extends TextBox implements CommandListener {
        Command cmdOK = new Command("确认", Command.OK, 1);
        Exec parent;
        List list;
        String flag;

        public NewTextBox(String title, int size, Exec parent, List list) {
                super(title, "", size, TextField.ANY);
                this.parent = parent;
                this.list = list;
                addCommand(cmdOK);
                setCommandListener(this);
        }

        public void commandAction(Command c, Displayable arg1) {
                int index = list.getSelectedIndex();
                String result = getString();
                if (index < 0) {
                        list.append(result, null);
                } else {
                        if (flag.equals("after"))
                                list.insert(index + 1, result, null);
                        else {
                                list.insert(index, result, null);
                        }
                }
                parent.getDisplay().setCurrent(list);
        }

        public void setFlag(String flag) {
                this.flag = flag;
        }
}

class BrowseTextBox extends TextBox implements CommandListener {
        Command cmdOK = new Command("确认", Command.OK, 1);
        Command cmdDelete = new Command("删除", Command.BACK, 1);
        Exec parent;
        List list;

        public BrowseTextBox(String title, int size, Exec parent, List list) {
                super(title, "", size, TextField.UNEDITABLE);
                this.parent = parent;
                this.list = list;
                addCommand(cmdOK);
                addCommand(cmdDelete);
                setCommandListener(this);
        }

        public void commandAction(Command c, Displayable arg1) {
                if (c == cmdOK) {
                        parent.getDisplay().setCurrent(list);
                } else if (c == cmdDelete) {
                        int index = list.getSelectedIndex();
                        list.delete(index);
                        parent.getDisplay().setCurrent(list);
                }
        }

        public boolean update() {
                int index = list.getSelectedIndex();
                if (index >= 0) {
                        setString(list.getString(index));
                        return true;
                }
                return false;
        }
}

class InfoAlert extends Alert {
        public InfoAlert() {
                super("通知");
                setType(AlertType.INFO);
                setTimeout(1000);
                setString("没有记录");
        }
}

使用Java实现面向对象编程 第一章

使用Java实现面向对象编程 1. 面向对象就是采用“现实模拟”的方法设计和开发程序 2. 面向对象设计的过程就是抽象过程,分一下3步构成 (1):发现类 (2):发现类的属性 (...
  • weixin_36024609
  • weixin_36024609
  • 2017年03月31日 17:12
  • 938

Python学习笔记13:Python面向对象编程

1、引言 (1)类和实例:类是对象的定义,实例是“真正的实物”。 定义类:类名通常大写字母打头。class MyNewObjectType(bases): 'define MyNewObj...
  • tiana0
  • tiana0
  • 2016年07月30日 23:01
  • 1757

面向对象编程与基于面向对象编程

最近在学习高并发的网络库,这个库采用的是基于面向对象的编程思想写的。以前都是面向对象,第一次听说基于对象编程,在此记下自己的学习心得。 在库中作者使用boost::function/bind来实现,...
  • tian_110
  • tian_110
  • 2015年05月29日 08:54
  • 350

javascript: 基于原型的面向对象编程

Douglas Crockford指出javascript是世界上最被误解的编程语言。由于javascript缺少常见的面向对象概念,许多程序猿认为javascript不是一个合适的语言。我在做第一个...
  • bdss58
  • bdss58
  • 2016年04月30日 00:11
  • 365

简单列表的实现(基于数组)

基于数组,实现一个简单的列表,支持如下功能: 下标末尾添加,中间插入末尾删除,中间删除空间不够时自动扩容清空所有元素简单的错误检测 下面是代码: #ifndef _ARRAYLIST_ #def...
  • thinkingForJoy
  • thinkingForJoy
  • 2014年02月26日 11:14
  • 467

面向对象编程的优点

1、维护简单   模块化是面向对象编程中的一个特征。实体被表示为类和同一名字空间中具有相同功能的类,我们可以在名字空间中添加一个类而不会影响该名字空间的其他成员。 2、可扩充性   面向对象编程从本质...
  • Crazy_Dreamer
  • Crazy_Dreamer
  • 2007年04月17日 15:24
  • 6342

微信公众号开发者模式Java笔记-管理素材

/** * 获取素材列表 */ public JSONObject getMaterialList(String type ,int offset, int count) ...
  • sinat_15114467
  • sinat_15114467
  • 2015年12月31日 14:50
  • 1299

C++笔记:面向对象编程基础

面向对象编程基础 面向对象编程基于三个基本概念: 数据抽象-继承-动态绑定...
  • liufei_learning
  • liufei_learning
  • 2014年03月18日 06:20
  • 5935

JavaScript 精粹 基础 进阶(8)OOP面向对象编程(上)

面向对象编程,oop并不是针对与javascript,很多语言都实现了oop这样一个编程发法论,比如说java,c++,都是实现了oop的语言。概念与继承 概念 面向对象程序设计(Object-o...
  • u013861109
  • u013861109
  • 2016年12月20日 15:26
  • 594

基于web的git简易管理系统

这篇博客其实算是记录自己的开发团体关于代码管理方式的一个变迁,分为两部分,一是前一篇基于SVN的流程(http://blog.csdn.net/xiangzi1113/article/details/...
  • xiangzi1113
  • xiangzi1113
  • 2014年03月17日 17:56
  • 1925
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于面向对象编程的列表管理
举报原因:
原因补充:

(最多只允许输入30个字)