全部博文(155)
分类: Java
2010-04-27 14:36:18
1.简介 2.特色 //#if {test}
System.out.println("is test mode");
//#else System.out.println("is not test mode"); //#endif 当在build.xml中执行"ant emulator”时,运行到这段代码的时候就会输出"is test mode",因为这里{test}的值为true; 直接执行"ant",{test}值为false,则会输出"is not test mode"(这是因为在build.xml中,target为"emulator"时,把test设为了true,后面有详细解释) //#if polish.api.mmapi Player player = Manager.createPlayer(url); player.realize(); player.start(); //#endif 如果手机不支持MMAPI,则这段不会被包含到jar中,至于j2mepolish如何知道你的手机是否支持MMAPI,取决于:a.你想生成的手机型号或platform;b.j2mepolish本身带有一个关于各个手机型号的参数; .myStringItem { text-effect: shadow; text-shadow-color: black; /* = default */ layout: horizontal-center | horizontal-expand; font { face: proportional; size: large; style: bold; color: #eef1e5; } background { type: simple; color: #ffffffff; } } 应用j2mepolish的预处理(Preprocessing)来运用这个样式 //#style myStringItem StringItem myString = new StringItem(null,"J2ME Polish");
3.安装j2mepolish
.myStringItem{ font-size : large ; font-color : red ; font-style : bold ; border{ width : 2 ; } } 这是一个很简单的css文件,定义了一个字体与边框的样式,这个样式在我们的代码中会使用到的,然后在messages.txt中输入 public class Hello extends MIDlet{ private Form mainScreen ; protected void destroyApp(boolean arg0) throws MIDletStateChangeException { } protected void pauseApp() { } protected void startApp() throws MIDletStateChangeException { mainScreen = new Form(null); //#style myStringItem StringItem helloItem = new StringItem(null,Locale.get("hello.label")); mainScreen.append(helloItem); Display.getDisplay(this).setCurrent(mainScreen); } } 代码很简单,可能有些奇怪的是这句"//#style myStringItem“,这个其实就是引用刚才建立的"polish.css”文件中的那个".myStringItem"样式,也就是这个 helloItem输出到手机上后的样子就是".myStringItem"所描述的样式;还有一个地方是"Locale.get("hello.lable")",这个是j2mepolish用来将messages.txt中的"hello.label" 的值调入源文件的,j2mepolish会解析源文件中的各种特殊指令,再生成新的源文件,例如这个Hello.java,经过j2mepolish的编译后,会在工程下生成一个"build"目录,然后j2mepolish处理后生成的新的源文件会放在(依据我当前的项目) public class Hello extends MIDlet{ private Form mainScreen ; protected void destroyApp(boolean arg0) throws MIDletStateChangeException { } protected void pauseApp() { } protected void startApp() throws MIDletStateChangeException { mainScreen = new Form(null); //#style myStringItem StringItem helloItem = new StringItem(null,"\u4f60\u597d\uff0c\u591a\u591a\u6307\u6559\uff01", de.enough.polish.ui.StyleSheet.mystringitemStyle ); mainScreen.append(helloItem); Display.getDisplay(this).setCurrent(mainScreen); } } 中文(你好,多多指教!)已经变成unicode码被包含进源代码里,这样省去了好多麻烦。 为了顺利可以运行,我们还需要改动下build.xml的设置,在build.xml中找到 <jad> <attribute name="Nokia-MIDlet-Category" value="Game" if="polish.group.Series40" /> jad> 在 <jad> <attribute name="Nokia-MIDlet-Category" value="Game" if="polish.group.Series40" /> <attribute name="MIDlet-1" value="HelloPolish,,com.yeahliu.helloPolish.Hello" /> jad> 这样j2mepolish就会将"MIDlet-1"这个属性添加到jad中(实际可运用于手机上的jad和jar)。 最后,我们可以来运行了,两种方式,一种是在Hello.java上点击右键,在弹出的菜单上选择"Run As",再在右边选择"J2ME Polish MIDlet";另一种是在打开build.xml的情况下,选择节"emulator",右键"Run As",再选择"Ant Build";如果第二种方式运行不了,出现"unable to find following requested device-identifiers"的错误,那么请在build.xml文件中加入 <property name="device" value="Generic/Midp2Cldc11" /> 就可以运行了,结果如下图 5.小结
|