{ uicontroller.handleEvent(UIController.EventID.EVENT_SEARCH_RECORD,new Object[]{userName}); } } } MIDP中的低级事件处理是通过实现Canvas类的相关方法来实现的,例如当用户按下某个按键,应用程序应该去处理相应的操作。由于个人通信录中并未涉及相关内容因此不做讲解。
MIDP中的UI类使用起来比不难,然而界面导航问题却并不容易解决,事实上它是困扰很多J2ME程序员的问题。在MIDP中我们只能通过调用Display类中的setCurrent()方法来实现不同界面之间的切换,如果界面多起来比如有8-10个界面的时候就会显得非常的麻烦。你也许想构造一个树形的结构来记录每个界面的父亲界面例如: public ChildUI(Displayable parent,Dispaly display) { this.parent = parent; this.display = display; } 但是当界面以及相互之间的联系增加的时候,界面的导航问题仍然是一个噩梦。MVC设计模式在Web Application应用开发方面已经被证明是非常成功的,例如Apache的开源项目struts,在本文中我将讲述如何应用MVC设计模式解决MIDP应用程序的界面导航问题。 MVC的目的就是实现显示(View)与逻辑(Model)的分离,而在其中起到重要作用的就是控制器(Controller)。在控制器内通常我们要定义一些事件的代号以便和UI类通信,保证正确处理相应的事件,我们可以使用内部类来标记这些事件的代号。 public static class EventID { private EventID() { }
public static final byte EVENT_NEW_RECORD_SELECTED = 1; public static final byte EVENT_SAVE_RECORD_SELECTED = 2; public static final byte EVENT_NEWPHONE_BACK_MAINUI = 3; public static final byte EVENT_LISTPHONE_BACK_MAINUI = 4; public static final byte EVENT_SEARCHUI_BACK_MAINNUI = 5; public static final byte EVENT_CLEAR_RECORD_YES = 6; public static final byte EVENT_CLEAR_RECORD_NO = 7; public static final byte EVENT_DELETE_RECORD = 8; public static final byte EVENT_DELETE_RECORD_YES = 9; public static final byte EVENT_DELETE_RECORD_NO = 10; public static final byte EVENT_DISPLAY_INFOMATION = 11; public static final byte EVENT_DETAIL_BACK_LIST = 12; public static final byte EVENT_SEARCH_RECORD = 13; public static final byte EVENT_SEARCH_RECORD_ANYWAY = 14;
public static final byte ADD_NEW_RECORD = 100; public static final byte SEARCH_RECORD = 101; public static final byte CLEAR_RECORD = 102; public static final byte LIST_RECORD = 103; public static final byte HELP = 104; }
当UI类中有事件发生的时候它可以向UIController类传输事件的代码,UIController类根据代码来进行相应的事件处理。例如: if (arg0 == backCommand) { uicontroller.handleEvent(UIController.EventID.EVENT_NEWPHONE_BACK_MAINUI) &n
上一页 [1] [2] [3] [4] [5] [6] [7] 下一页 |