LWUIT库是一个严格的组件UI库,并不试图抽象基于类似网络或者系统存储的系统服务。他也不会尝试去解决与本地图像相关联的UI问题等等。
为了便携性,LWUIT库实现它自己在本地系统画布上的图层,并且提供组件抽象。这个抽象通过几个掩饰特定系统设备的关键类完成,比如Graphics,Image和Font。
当使用LWUIT库的时候,使用对任何事物的抽象类是很重要的。为了避免变体,没有办法进入哪些类的“真实的”实例(比如,javax.microedition.lwuit.Graphics)。
LWUIT努力使在小设备上具备更多的功能,但这可能造成混淆现象,或者出现由很多图像的重量引起的阻塞。为了解决这些问题,LWUIT使用了一种可选的资源文件格式,它可以改善对资源的利用。更多的细节,看第九章,“资源”。
EXAMPLE 1-1 Hello World Example for MIDP
1.package com.cdinfo.lwuit.helloworld; 2. 3.import javax.microedition.midlet.*; 4.import com.sun.lwuit.Display; 5.import com.sun.lwuit.Form; 6.import com.sun.lwuit.Label; 7.import com.sun.lwuit.layouts.BorderLayout; 8.import com.sun.lwuit.plaf.UIManager; 9.import com.sun.lwuit.util.Resources; 10.import java.io.IOException; 11. 12./** 13. * @author ZY 14. */ 15.public class HelloWorldMidlet extends MIDlet { 16. public void startApp() { 17. Display.init(this); 18. try { 19. Resources res = Resources.open("/javaTheme.res"); 20. UIManager.getInstance().setThemeProps(res.getTheme("javaTheme")); 21. } catch(IOException ioe) { 22. ioe.printStackTrace(); 23. } 24. Form form = new Form("HelloLWUIT"); 25. form.setLayout(new BorderLayout()); 26. form.addComponent(BorderLayout.CENTER, 27. new Label("Hello LWUIT;Hello World")); 28. form.show(); 29. } 30. 31. public void pauseApp() { 32. } 33. 34. public void destroyApp(boolean unconditional) { 35. } 36.}
这是一个简单的hello world例子,它基于MIDP。所有的UI代码使用的是LWUIT,它也是与其他平台兼容的,比如CDC。
然而这个例子是特定为MIDP的。对于MIDP,应用管理系统(AMS)要求有一个MIDlet类存在,而在CDC环境下,一个Xlet则需要存在(在Java SE下,你则需要一个含有main方法的类,等等)。
注意在EXAMPLE 1-1中,任何一个使用LWUIT库的应用都的使用第一行代码,用display注册主类。这个行为时工具特定的。在MIDP中,你不用做太多去参考父MIDlet,因此这个操作必须在应用的开始就展现出来。
UI代码的创建与MIDlet合并是一件简单的事,但是它应该与一些将移植到未来同样引入LWUIT库的平台的类相分离。
为了提高兼容性,LWUIT库完全控制和封装UI线程。它有一个类似于”EDT”的主线程(思想来源于Swing和AWT中的时间分发线程)。所有的事件和绘画请求都通过这个线程分发。这样就保证了事件和绘画请求有序进行,并且避免造成线程问题的危险。它同样使得可能造成次线程模型不一致的框架能够移植。查阅Display类(在API文档中的com.sun.lwuit.Display)获取更多关于与EDT整合和序列化请求的细节。
我们没次学程序的时候 都是从HELLO WORLD 开始学起,虽说是简简单单的 几行代码。但他可以引入你入门。
所以认真对待这小小的hello world!