Hello LWUIT——LWUIT开发指南1

本文介绍LWUIT轻量级UI库的基本概念及其在资源受限设备上的应用,如手机和机顶盒。文章详细阐述了LWUIT的设计理念、组件层次结构以及如何在MIDP平台上构建一个简单的HelloWorld示例。

        此文档的翻译仅仅是为了督促我学习LWUIT库,英语能力有限,相关的英语文档也看的少,翻译不好的地方,请多多指教。

 

第一章:LWUIT简介

这本书描述了怎么使用LWUIT库。LWUIT可以帮助你在手机或者其他设备商开发出具有感染力的图形用户界面,但这些设备需要支持MIDP2.0LWUIT包括可视组件和其他用户接口部分,如主题,渐变,动画等。

在介绍完LWUIT基础部分后,这本书还介绍了对各种组件和其它LWUIT包的使用

1.1API概述

LWUIT是一个轻量级的组件库,其思想来源于Swing,但是是为手机,机顶盒这样的资源有限的设备设计的。LWUIT具备插件式的主题功能,组件与容器间的层次关系和基于对GUI工具包的抽象。轻量级表明这个库中的组件通过Java源码确定他们的状态,而不需要同等于本地的描述

内部接口和抽象类提供接口的抽象和基于这个框架的APIs。这体现了便携性,并且提供了在现在的设备和未来设备间的移植途径。比如Graphics是一个基于这个框架的graphics对象的抽象。

LWUIT库试图在思想上避免“最低级普通的演示”,他们是通过低级平台上失去的一些特性来实现的,并尽力利用高级平台。图1-1展示了组件类的层次关系。

FIGURE1-1

 

1.1.1广度和便携

LWUIT库是一个严格的组件UI库,并不试图抽象基于类似网络或者系统存储的系统服务。他也不会尝试去解决与本地图像相关联的UI问题等等。

为了便携性,LWUIT库实现它自己在本地系统画布上的图层,并且提供组件抽象。这个抽象通过几个掩饰特定系统设备的关键类完成,比如GraphicsImageFont

当使用LWUIT库的时候,使用对任何事物的抽象类是很重要的。为了避免变体,没有办法进入哪些类的“真实的”实例(比如,javax.microedition.lwuit.Graphics)。

LWUIT努力使在小设备上具备更多的功能,但这可能造成混淆现象,或者出现由很多图像的重量引起的阻塞。为了解决这些问题,LWUIT使用了一种可选的资源文件格式,它可以改善对资源的利用。更多的细节,看第九章,“资源”。

EXAMPLE 1-1 Hello World Example for MIDP

package com.cdinfo.lwuit.helloworld;

import javax.microedition.midlet.*;
import com.sun.lwuit.Display;
import com.sun.lwuit.Form;
import com.sun.lwuit.Label;
import com.sun.lwuit.layouts.BorderLayout;
import com.sun.lwuit.plaf.UIManager;
import com.sun.lwuit.util.Resources;
import java.io.IOException;

/**
 * @author ZY
 */
public class HelloWorldMidlet extends MIDlet {
    public void startApp() {
        Display.init(this);
        try {
         Resources res = Resources.open("/javaTheme.res");
         UIManager.getInstance().setThemeProps(res.getTheme("javaTheme"));
        } catch(IOException ioe) {
            ioe.printStackTrace();
        }
        Form form = new Form("HelloLWUIT");
        form.setLayout(new BorderLayout());
        form.addComponent(BorderLayout.CENTER,
                            new Label("Hello LWUIT;Hello World"));
        form.show();
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
    }
}

 

 

这是一个简单的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库的平台的类相分离。

1.1.2事件和线程

        为了提高兼容性,LWUIT库完全控制和封装UI线程。它有一个类似于”EDT”的主线程(思想来源于SwingAWT中的时间分发线程)。所有的事件和绘画请求都通过这个线程分发。这样就保证了事件和绘画请求有序进行,并且避免造成线程问题的危险。它同样使得可能造成次线程模型不一致的框架能够移植。查阅Display(API文档中的com.sun.lwuit.Display)获取更多关于与EDT整合和序列化请求的细节。

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值