Muscle's profileMusclePhotosBlogListsMore ![]() | Help |
|
August 17 j2me polish 学习(三)现在我们来说说上边的ExpensesTracker里边用到的j2me知识,同时我会介绍polish,通过polish来美化ExpensesTracker。我会从j2me基本的GUI(主要是javax.microedition.lcdui;类)编程,然后会讨论j2me里的数据存储。 ExpensesTracker 程序里边由一个单独的MIDlet(Expenses)和一个数据类(ExpenseInfo)组成。Expenses提供了简单的UI,而ExpenseInfo则定义了数据的结构(fields for data and time, description, amount, and category )。因为lcdc1.0是不支持floating-point数据的(lcdc1.1支持),所在在ExpenseInfo里用两个独立的int 来记录expense amount的dollars和cents。 基本UI: 从上边工程运行的效果来看,Expenses UI 由一个List 组件(显示了你记录了的Expense条目)和三个Command 组件(quitting the app, editing an item, adding a new item)组成。 List是继承Screen类而来的,在j2me中的List组件其有三种类型: · Implicit Lists (Expenses里是用此类型) :允许只能选择一个item, 当你选择某个item时会触发commandAction 事件。 · Exclusive Lists(单选):以radio按钮形式显示,一次只能选择一个item,选择时不会触发commandAction 事件。 · Multiple Lists(多选): 以check boxes 按钮形式显示,允许多选,选择时不会触发commandAction事件。 当用户选择之后,可以通过下面的方法返回选定的索引值: getSelectedIndex()--------返回List中一个选定项的索引值。 Polish工程项目的编译,运行,打包等等,是由build.xml文件控制的。下边是ExpensesTracker工程里的build.xml: <project <!-- Definition of the J2ME Polish task: --> <target name="clean" <target <!-- NetBeans specific build targets: --> <target name="rebuild" <target name="rebuild-all" <target name="jar-all" <target name="clean-all" <target name="compile-single" <target name="enableCustomization1"> build.xml文件中最主要的是<info>,<deviceRequirements>和<build>三部分。 其中<info>元素指定说明了工程中的一般信息,如,工程名和版本。<deviceRequirements>元素是用来指定程序编译时所选择的模拟器。<build>元素是工程编译构件时的主要控制器(如,可以设定属性 usePolishGui=”true”来指定把polish应用当前工程中,而设为false时,则说明当前工程不引入polish,此时工程与一般的mobile应用程序一样)。 当build.xml文件中的<build>属性usePolishGui=”true”时,我们就可以修改工程目录中resources里的polish.css文件控制程序的显示(美化j2me介面)。在j2me程序中只需要以“//#style”指令就可以调用相应的css属性(请注意这指令与注释“//”的区别)。 其中,polish.css文件包含对应用程序的全部items和screens的style定义。 polish.css文件中常用的预定义的style(用于程序中的所有items和screens,但当引用自定义style时,预定义的style会被自定义style覆盖掉: colors{}:用来定义一系列的颜色,供其它style中的color属性引用。 backgrounds{}:用来定义一系列的背景,供其它style中的background属性引用。 borders{}:用来定义一系列的边框,供其它style中的border属性引用。 focused{}:当获取某个item或screen的焦点时的style。 title{}:应用于所以screen中的title的style。 scrollbar{}:当build.xml文件中“polish.useScrollBar“变量设为true时被scrollbar引用。 label{}:应用于所以item或menu中标签的style。 以下style是当build.xml文件中“polish.MenuBar.useExtendMenuBar“变量设为true时被引用的: menubar{}, menu{},menuItem{},leftcommand{},rightcommand{} polish.css文件中自定义style: 注意:styel可以继承的,且引用子style时既保留父style的属性又有自己的属性,同时子style可以重写父style属性。 自定义style名称:如“.mystyle{}”是由点加字符串。注意不能是与预定义的名称相同。 下面我们来对ExpensesTracker中的UI---List以CSS进行修改。 修改后程序运行如下: 其polish.css文件: colors { focused { /** 而Expenses.java中引用CSS的地方(绿色字体): public Expenses() { lsMain.setCommandListener(this); private void rebuildList(){ August 04 j2me polish 学习(二)上次介绍了一下polish的大概。其实本人我对j2me和polish都是刚接触的,以下来我会同时介绍j2me和polish的学习心得。以下我们以一个expenses tracker(builder.com里的一个例子)的例子来介绍建立polish项目(这个例子可以在)。 在netbeans我们可以先建立一个一般的Mobile的项目,按netbeans 向导很容易建立。这里工程expenses tracker里有两个类:
运行此工程如下:
现在我们来让这个工程变为polish工程: 我们可以把{polish.home}/sample/blank里的blank例子里的全部文件copy到expenses tracker 工程下,然后把原来expenses tracker工程文件夹下的src文件夹移入source文件夹里。把build-netbeans.xml改名为build.xml替换旧的build.xml文件。 然后我们来修改build.xml: 1)、工程名可以可以改为 2)、把全部<deviceRequirements> 注释掉改为: <deviceRequirements> 这里你可以把value值改为你想显示的模拟器,但是模拟器要安装在你机上,且polish支持(可以查看{polish.home}里的devices.xml文件看polish是否支持)。 3)、<midlet />属性改为你工程的midlet类本例子如下: 4)、引入{polish.home}/import/enough-j2mepolish-client.jar; (注:我们也可以不用建立工程,直接把blank工程copy到你的工程目录下, 然后把你的旧工程代码src目录放入cource文件夹, 然后按上边的修改后在netbeans打开工程就可以了。) 现在就可以运行程序看看效果: |
|
|