J2ME游戏开发第二章高级界面

合集下载

J2ME-lecture03-高级用户界面设计

J2ME-lecture03-高级用户界面设计
protected void pauseApp() { }
public void commandAction(Command c,Displayable d){ if(c==exitCommand) { destroyApp(true); notifyDestroyed();} }
}
11
12
二、屏幕对象——Displayable类
叙述 程序自定义的命令按钮,在设备上没有直接 对应的按键,而对应到屏幕上 回退到前一屏幕,用于界面导航 取消当前操作,或对当前提示给予否定回答 确定当前操作,或对当前提示给予肯定回答 获得帮助信息 停止当前操作或进程 退出应用程序 在屏幕上显示多条选项
18
在移动信息设备中,soft button的数量是有限制的,通常是两个。
也不能保证硬件设备的运行结果相同,可移植性差; ➢ 可以进行细致的布局,绘制每个像素点、接受较低层的
事件、直接获得用户的按键消息; ➢ 可以设计复杂的用户交互。
4
三、lcdui包结构(主要类的类图解)
(Liquid Crystal Display User Interface,液晶显示用户界面)
5
三、lcdui包结构
(Liquid Crystal Display User Interface,液晶显示用户界面)
6
import javax.microedition.midlet.MIDlet; import javax.microedition.lcdui.*;
public class Hello extends MIDlet implements CommandListener { private Display display; private TextBox t; private Command exitCommand;

郭克华J2ME移动开发实战教学视频讲义02

郭克华J2ME移动开发实战教学视频讲义02

些初始化代码写在构造函数或 startApp 里面,这个策略将在后面的程序中体现出来。
手机模拟器的上方,有一个
菜单,如图所示:
x3x
J2ME 移动开发实战教程

菜单中选择“暂停”,会发现控制台打印如下信息:
再在
菜单中点击“恢复”,控制台又会打印:
最后,你可以在
菜单中选择“退出”来关掉模拟器,也可以点击模拟器右方的
【2-1】详解 MIDlet 结构
〖实例需求〗
javax.microedition.midlet 中只包含一个 MIDlet 类,MIDlet(Mobile Information Devices let)是手机上运行的 J2ME 应用程序,即移动信息设备小程序。理论上讲,手机应用程序都
J2ME 移动开发实战教程
“手机电源开关”按钮关掉模拟器。
值 得 一 提 的 是 , 调 用 notifyPaused 函 数 可 以 手 工 让 程 序 进 入 暂 停 状 态 ; 调 用
notifyDestroyed 函数可以手工让程序销毁。
读者可以自行进行测试。
综上所述,MIDlet 的生命周期如图 2-1 所示:
构造函数(自动)
2:三个普通函数:
这些函数体现了 MIDlet 的生命周期: 1:当 MIDlet 运行时,startApp 函数会自动调用,应用程序进入运行(Active)状态,此 时程序正在运行中; 2:在 MIDlet 运行时,你可以通过一些手段让 MIDlet 暂停,此时,pauseApp 函数自 动调用,让程序进入暂停(Paused)状态; 3:当 MIDlet 消亡时,自动调用 destroyApp 函数。 以上三个函数都是自动调用的。接下来的两个函数可以人为调用: 1:人为调用 notifyPaused 函数,MIDlet 立刻进入暂停(Paused)状态,MIDlet 持有的所 有资源暂时被释放,但它随时可能被运行; 2:人为调用 notifyDestroyed 函数,MIDlet 立刻进入销毁(Destroyed)状态,MIDlet 被

j2me高级用户界面

j2me高级用户界面

• 例如:InfoTest.java--显示图片警告框。
仰恩大学计算机与信息学院

LCDUI的体系结构
Display Displayable Screen TextBox List Alert Canvas Form Item StringItem DateField TextField ChoiceGroup
仰恩大学计算机与信息学院

例如
•CommandDemo.java--演示Command事 件处理,显示用户的选择,运行效果如下 所示:
仰恩大学计算机与信息学院

Command对象的创建
•构造方法如下: Command(String label, int commandType, int priority) •commandType:命令的类型 •priority:命令的显示优先级
仰恩大学计算机与信息学院
实验二: 实验二:J2ME的图形界面 的图形界面
一、概述 二、高级用户界面 三、低级用户界面
仰恩大学计算机与信息学院
一、概述

LCDUI工作模型
• 为了在MIDP设备上显示信息,过程如下: • 第一步:取得设备的显示屏幕; • 第二步:创建Screen或Canvas图形界面对象; • 第三步:在屏幕上显示图形界面对象。
仰恩大学计算机与信息学院
二、高级用户界面

List
• 构造方法:public List(String title, int listType) • 常用方法: append(“Sports”, img) insert(1, “Sports”, img) getString(3) getSelectedIndex()

J2ME移动应用开发——MIDP高级界面编程

J2ME移动应用开发——MIDP高级界面编程
display.setCurrent(frmPhone);



}//2、重写方法

在此之前先要声明并实例化”电话本”窗体对象: private Form frmPhone; frmPhone = new Form(“电话本”);

frmMain.setCommandListener(this);//3、在 startApp中将监听器注册到UI组件
2、在构造方法中,实例化按钮对象

3、在startApp中,将按钮对象添加到主界面

第7页共10页
第2-2步 添加按钮响应

public class MainFrame extends MIDlet implements CommandListener//1、实现接口 public void commandAction(Command arg0, Displayable arg1) { if(arg0==cmdPhone)

frmPhone.append(tfName);
第9页共10页
第4步 向“电话本”界面添加“添加”按 钮cmdAdd并处理“添加”按钮响应




第4-1步:向“电话本”界面添加“添加”按钮(同 第2-1步) 1、在类体中,声明按钮对象 private Command cmdAdd; 2、在构造方法中,实例化按钮对象 cmdAdd = new Command(“电话 本”,Command.SCREEN,1); 3、在startApp中,将按钮对象添加到主界面 frmPhone.addCommand(cmdAdd); 第4-2步:处理“添加”按钮响应代码(同 第2-2步) 1、在commandAction方法中,添加如下代码 else if(arg0==cmdAdd) System.out.println("姓名:"+tfName.getString()); 2、给frmPhone窗体注册按钮监听器 frmPhone. setCommandListener(this);

J2ME手机应用开发技术-2

J2ME手机应用开发技术-2
page 2
布和画 笔的关系 要用到低级UI必须要继承Canvas 这个抽象 类 14 中国最大、最专业的3G移动互联网人才培养基地 颜色操作 颜色的设置方法 public void setColor(int red,int green,int blue) public void setColor (int RGB) RGB的格式是0x00RRGGBB 高两位的00用于表示Alpha通道,也就是半透明信 息, 一般情况下我们可以忽略 public void setGrayScale(int value) 绘出灰色的 阶度 它的值从0到255共256中灰色阶度 当RGB为0xffffff时表示白色,而当这个值为0时 表示黑色 在photoShop中演示 颜色的RGB构成 15 中国最大、最专业的3G移动互联网人才培养基地 Graphics类 Graphics类 Graphics类是图形处理的基础类 使用Graphics类可以在屏幕上绘制图片、线 条 、文字等多种低级的界面 如果需要编写游戏程序,肯定会用到这个类。 16 中国最大、最专业的3G移动互联网人才培养基地 坐标的概念 坐标 数学坐标 一个原点,位于左下角,水平的x轴,数值向右递 增;与x轴垂直的y轴,数值向 上递增 手机中坐标 原点在左上角,x轴数值向右递增,y轴数值项下递 增 正好与数学里的坐标相反
page 3Biblioteka 可变的Image对象其实就是一个在内存中存 储的对象,可以在内存中修改图像数 据以后 再显示出来 21 中国最大、最专业的3G移动互联网人才培养基地 锚点的概念 水平方向 Graphics.LEFT Graphics.HCENTER Graphics.RIGHT 垂直方向 Graphics.TOP Graphics.BASELINE Graphics.BOTTOM 在画图和文字是用到锚点 22 中国最大、最专业的3G移动互联网人才培养基地 setClip()方法 setClip()方法 只有被它的参数圈定的范围才能够被绘制 public void setClip( int startX,int startY, int width,int height) 效果演示 菜单,游戏中的应用 优点 23 中国最大、最专业的3G移动互联网人才培养基地 Font类 Font类 支持有限的字体 每种手机的默认字体不同 无构造函数 获得字体对象 public static Font getFont(int fontSpecifier) public static Font getF ont(int face,int style,int size) 可以使用Graphics类的getFont()方法获得 当前正在使用的字体对象 24 中国最大、最专业的3G移动互联网人才培养基地 Font类 Font类 25 中国最大、最专业的3G移动互联网人才培养基地 Font类 Font类 要获得一个指定样式、大小的字体,可以采用如下 的方式: Font f=Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_LARG E) 获得系统默认的字体。 getDefaultFont() 应用字体 void setFont(Font f) 字体应用演示 26 中国最大、最专业的3G移动互联网人才培养基地 全屏及中断 两种状态 一普通默认情况下 全屏状态。 可以用setFullScreenMode()方法来对其设 定 两者之间的区别在于当我们使用 全屏幕状 态的时候,Title、Ticker以及Command都 无法在屏幕上显示。 演示(02/n odify) 27 中国最大、最专业的3G移动互联网人才培养基地 全屏及中断 对于外部事件,屏幕会被系统画面所覆盖的 时候,就会调用hideNotify() 当恢 复原状时,就会调用我们原本的画面, 那么系统就会同时调用showNotify() 在实际 操作过程当中,应该覆写这两个方法 演示 28

J2ME移动应用开发课程设计 (2)

J2ME移动应用开发课程设计 (2)

J2ME移动应用开发课程设计1. 简介随着移动互联网的飞速发展,移动应用的重要性越来越突出。

Java平台微型版(Java 2 Platform, Micro Edition, J2ME)是一种专门针对嵌入式设备制定的Java平台,可用于开发移动设备上的Java应用程序。

本课程设计旨在介绍J2ME 移动应用开发的基础理论和实践技术,帮助学生熟悉J2ME平台,掌握常用的应用程序开发技术,提升移动应用开发水平。

2. 学习目标1.了解J2ME平台的基础知识和发展历程。

2.熟悉J2ME开发环境的配置和使用。

3.掌握J2ME移动应用程序的基本开发技术。

4.能够开发一个简单的J2ME移动应用程序。

3. 课程安排3.1 第一周:J2ME平台介绍主要内容:J2ME平台概述、J2ME体系结构、J2ME应用程序类型、J2ME与J2SE 的区别与联系。

3.2 第二周:J2ME开发环境搭建主要内容:J2ME开发环境介绍、J2ME IDE Eclipse的安装与配置、J2ME手机模拟器的安装与使用、J2ME开发的准备工作。

3.3 第三周:J2ME应用程序开发基础主要内容:J2ME应用程序的结构、J2ME应用程序的生命周期、J2ME界面设计与事件处理、J2ME应用程序的调试与测试。

3.4 第四周:J2ME应用程序开发实践主要内容:基于J2ME平台的应用程序开发实践,包括聊天室、计算器、迷宫游戏等。

3.5 第五周:课程总结与展望主要内容:对本课程进行总结,回顾学习内容,展望J2ME应用程序开发的前景和发展。

4. 课程设计要求1.学生需要在规定时间内完成J2ME应用程序开发的任务,提交所开发应用程序的源代码和应用程序截图。

2.学生需要在课堂上积极参与讨论、提问和答辩环节,了解和掌握相关知识和技能。

3.学生需要在考核环节中完成J2ME应用程序的演示和答辩,展示自己的学习成果。

5. 参考文献1.《J2ME移动应用开发实践》(高文华等著)2.《Java平台微型版Java ME程序设计》(徐鸿义等著)3.《J2ME入门经典》(曹天元等著)。

J2ME第2课

J2ME第2课


实例

选中那个list,就把 标题改为响应的字符 串。
高级界面开发


Alert Textbox Ticker(界面渲染的工作)

看文档 lcdui包
TextBox的用法

创建TextBox,指定标题,文字,最大 长度,输入限制



常见输入限制:TextField.ANY 获得光标位置getCaretPosition() ; 获取文本getString() 插入文本:insert() 替换文本:setChars ;setString 删除文本:delete

MIDlet生命周期的状态转换函数有哪几 个?人为调用销毁函数是哪一个?
第2课 JAVAME高级界面开发
lcdui
J2ME体系结构框图
Configuration(配置):包含核心库,虚拟机 KVM (Kilo Virtual Machine): Profiles(描述),手机属于互联受限 等,包括以下2种: JAVA虚拟机,是所以JAVA程序运行的 设备,我们讲解的是CLDC,相对应的描 Optional packages 互联设备配置(CDC,connected device 基础,对于手机来说,在手机出厂之前, 述称为MIDP(mobile information configuration)面向强大的可以间歇式的网 Profiles 已经固化到手机中了。 device profile)只支持CLDC这样的基 络连接设备(有稳定的电源供应,设备性能强 础API远远无法满足实际的手机编程的 悍),如机顶盒、Internet电视,家用电器, Configuration 和汽车导航系统等。 需要的(如图形界面),所以在CLDC Java Virtual Machine 互联受限设备配置(CLDC,connected API的基础上,SUN公司又提供了专门 J2ME体系 limited device configuration)主要对大量 针对手机功能的MIDP API,所以CLDC Host Operating System 结构框图 的微型设备和嵌入式设备。 是MIDP的基础。

J2ME

J2ME

通用的屏幕对象。应用程序可以在这个屏幕对象中添加、删除、修改文本、图像和简单的相 关UI组合集合。
Form(可以包含多个不同类型的控件的屏幕类)
2
用户界面的管理
Display类(管理器)
MIDP应用程序中用户界面的中心控制者。MIDP中规定每个 MIDlet程序只能拥有一个Display对象。2个主要方法:
高级用户界面
MIDP用户界面特征 MIDP MIDP界面的管理和实现 高级事件机制 高级屏幕类及其子类
1
MIDP用户界面概述
LCDUI(Limited Configuration Device UI)包的设计:
高级界面(Screen):画面具有可移植性,但无法决定组件的颜色、字体和外观。 低级界面(Canvas):编写相对复杂,但对画面的控制具有完全的控制权。 由于手机一次只能显示出一个画面,因此每个画面只能在高级API或者低级API之间择一使用。 高级API和低级API可以在同一个MIDlet中混合使用,组成应用程序中的每个画面。但是同一个画 面中,就只能使用高级或者低级API中的一个。
getDisplay():获得此MIDlet当前的Display对象。 setCurrent():将Displayable对象设置为设备屏幕上可见。
Displayable类(显示者)
虚类,有两个直接子类(Screen,Canvas),这两个类及其子类 都可以作为参数传递给Display.setCurrent(),实现用户界面 的显示。5个主要方法:
new Form(“登录演示”, items);
5
软键(Command)类
创建对象:Command exit_cmd= new Command(“Exit”,Command.EXIT,1);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
屏幕显示的文字、对象的类型、对象的重要指数
Command编程
new Command(Labels,Type,Priority) 对象的类型:
Command.BACK:返回前一屏幕
Command.CANCEL:取消当前正在进行的工作 Command.EXIT:退出程序 Command.HELP:请求帮助 Command.ITEM:提示实现指定屏幕上的某一项 Command.OK:确定当前正在进行的动作 Command.SCREEN:应用到当前屏幕指令 Command.STOP:停止当前运行的操作
• • • • • • • • • • • • • • • • • • • • • • • • • • • •
import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class HelloWorld extends MIDlet implements CommandListener{ private Command exitCommand; private TextBox tb; public HelloWorld() { exitCommand = new Command("退出",Command.EXIT,1); tb = new TextBox("你好!,J2ME","你好!,J2ME",15,0); tb.addCommand(exitCommand); tb.setCommandListener(this); } protected void startApp() throws MIDletStateChangeException { Display.getDisplay(this).setCurrent(tb); } protected void pauseApp() { } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { } public void commandAction(Command c,Displayable d){ if(c == exitCommand){ try{ destroyApp(false); } catch (MIDletStateChangeException e){} notifyDestroyed(); } } }
Alert(String title,String alertText,Image alertImage,AlertType alertType); title是屏幕的标题 alertText是屏幕需要显示的提示信息 alertImage指定屏幕显示的图片 alertType指定了Alert屏幕的类型
AlertType
AlertType.ALARM: 提示已经通知系统处理用 户请求的前一个事件 AlertType.CONFIRMATION: 提示用户确认 AlertType.ERROR: 提示错误信息 : 提供给用户非威胁性的信息 AlertType.WARINING: 警告用户在进行潜在 危险的操作
Form——窗体,用来显示多个不同类型 的控件,使它们显示在同一个屏幕上
List——列表框。从指定的几个列表 中选取需要的选项
TextBox——文本盒,多行文本框。 用来输入文本
2、控件类
控件类是指那些不能在屏幕上直接显示,必须添加 到容器类(注:MIDP中的所有控件类均只能添加到 Form中)才可以显示的类。这些类也有一个统一的 父类Item类,其它的都是实现的控件类,包括以下 几个: ChoiceGroup—选择框,包括单选和多选 DateFiled——日期文本框 Gauge——进度条 ImageItem——图片项目 StringItem——可变字符串项目 TextFiled——单行文本框 在MIDP2.0中,新增两个控件: CustomItem—个性化项目,可以实现自己的控件 Spacer—空白 在实际的使用中,根据界面的需要,选择合适的 控件种类,然后添加到Form中进行显示。
J2ME游戏开发
第二章 高级用户界面设计
MIDP的界面(javax.microedition.lcdui)体 系详解,通过帮助文档可以更直观。 手机软件都有自己的界面,那到底是个啥 样子来的呢? 下面我们就来熟悉一下MIDP的界面类 体系。
首先需要注意的是,MIDP的标准界面类 都位于javax.microedition.lcdui包中,使用 时一定要记得引入---import。
Alert举例 import javax.microedition.midlet.*;
import javax.microedition.lcdui.*; public class AlertDemo extends MIDlet implements CommandListener { private Display display; private Command exitCommand; private Command alarmCommand; private Command errorCommand; private Alert alarmAlert; private Alert errorAlert; private Form form; public AlertDemo() { display = Display.getDisplay(this); exitCommand = new Command("退出", Command.SCREEN, 3); alarmCommand = new Command("警告", Command.SCREEN, 2); errorCommand = new Command("错误", Command.SCREEN, 1);//数值越小优先权越大 form = new Form("Alert演示"); form.addCommand(exitCommand); form.addCommand(alarmCommand); form.addCommand(errorCommand); form.setCommandListener(this); } public void startApp() { display.setCurrent(form); } public void pauseApp() { } public void destroyApp(boolean unconditional) {} public void commandAction(Command c, Displayable disp) { if (c == exitCommand) { destroyApp(false); notifyDestroyed(); } if (c == alarmCommand) {alarmAlert = new Alert("Alert Alarm演示", "This is a \"Alarm\" window!",null, AlertType.ALARM); alarmAlert.setTimeout(Alert.FOREVER); display.setCurrent(alarmAlert, form);} if (c == errorCommand) { errorAlert = new Alert("Alert Error演示","This is a \"Error\" window!",null, AlertType.ERROR); errorAlert.setTimeout(6000); display.setCurrent(errorAlert, form); } }}
首先重点介绍得是:
Displayable 是所有(高级界面中)可 以显示在屏幕上的类的父接口,所有 继承它的类都可以显示在屏幕上。 Dispaly 代表屏幕, 一般用getDisplay 方法取得屏幕,然后用setCurrent方 法把Displayable的对象显示在屏幕 上。
在界面体系中,可以直接显示的界面类 都继承自同一个父类——Displayable。根 据是否能直接操作屏幕,以及是否和屏幕 尺寸相关,MIDP的界面类分为两大类: 一、高级用户界面——和屏幕大小无关,不 能直接操作屏幕 二、低级用户界面——和屏幕大小相关,可 以直接操作屏幕
处理按钮高级事件,程序必须继承一个命令监听 器接口类CommandListener类 public class HelloWorld extends MIDlet implements CommandListener{ } Exit按钮会触发“按钮按下”的事件,需要使用 监听器
处理高级事件
添加监听器
当前显示的屏幕对象
当前被触发按钮对象
public void commandAction(Command c,Displayable d){ if(c == exitCommand){ try{ destroyApp(false); } catch (MIDletStateChangeException e){} notifyDestroyed(); } }
用户界面的体系结构
Displayable
Screen
Canvas
Alert Alert
Form Form
List List
TextBox TextBox
GameCanvas GameCanvas
高级用户界面
低级用户界面
高级用户界面中的类又分为两个部分:
1、容器类
容器类是指直接或者是间接继承自 Displayable,可以直接在屏幕上显示的类。 这些类都有一个统一的父类——Screen类, 其他的都是实现的容器类,包括以下几个: Alert—提示框,用来显示通知用户的一些 文本和图像信息
相关文档
最新文档