Microsoft Word - 第3章.doc

Size: px
Start display at page:

Download "Microsoft Word - 第3章.doc"

Transcription

1 第 3 章高级用户界面 无论是游戏程序还是大部分应用程序, 都和图形界面设计密不可分 在 J2ME 中高级图形用户界面由 MIDP(Mobile Information Device Profile, 移动信息设备简表 ) 实现, 所以也称为 MIDP 用户界面 MIDP 用户界面从功能上可以划分为高级用户界面和低级用户界面两部分 高级用户界面主要使用系统提供的组件进行游戏界面设计, 而低级用户界面则用于需要对显示屏精确控制的游戏过程设计中 通过本章的学习, 读者可以掌握下面的知识点 (1) 高级界面的管理和实现 (2) 高级屏幕类及其子类 (3) 高级界面应用 3.1 高级用户界面概述 LCDUI 包 根据 MIDP 的规格,LCDUI(Liquid Crystal Display User Interface) 包的设计分成高级 API 和低级 API 两种 由于手机一次只能显示出一个画面, 因此每个画面只能在高级 API 与低级 API 之间选择一种使用 如果使用了高级 API( 使用 Screen 的子类 ), 那么该画面就具有移植性 使用高级 API 撰写程序比较轻松, 但灵活性差 这是因为高级 API 所提供的组件都会由底层的虚拟机直接映射到该设备的原生用户界面, 所以开发人员无法决定组件的颜色 字形和外观, 因为这些都会由系统来决定, 因此对画面所能掌控的程度就比较低 另外, 当使用高级 API 时, 与用户的交互都会遵循该手机既有的用户界面的操作方式 使用低级 API( 使用 Canvas 的子类与 Graphics 类 ) 撰写程序相对复杂 这是因为使用低级 API 时, 开发人员将对整个手机的画面具有完全的控制权, 同时也能决定用户该如何与程序交互, 所以编写程序要考虑的事情比较多 由于每种设备都有不同的特性 ( 不同的操作方式 屏幕大小及颜色等 ), 因此一旦采用了低级 API, 那么将不保证程序可以在不同的机器上执行, 也不保证会有相同的执行结果 如果使用了低级 API 之后还希望能够跨平台, 那么开发人员必须花更多的时间让程序更有弹性才行, 例如, 开发人员不能假设屏幕的大小, 所以在屏幕上绘图时, 程序必须能动态调整绘图的结果才行 LCDUI 包的设计划分成低级 API 与高级 API 所以 LCDUI 包的体系结构区分成低级类库和高级类库 能够显示在屏幕上的组件都来自于 Displayable 这个抽象类, 而 Displayable 又派生出了 Screen 类和 Canvas 类, 如图 3-1 所示 从图 3-1 中可以看出,Displayable 这个抽象类的子类可以区分成两大类 :Canvas 类与 Screen 类, 其中 Canvas 类属于低级图形用户界面组件,Screen 类属于高级图形用户界面组

2 J2ME 手机游戏开发技术与实践 ( 第 2 版 ) 件 在同一时间, 只能有唯一一个 Canvas 或 Screen 类的子类出现在屏幕上 每当调用 Display 的 setcurrent() 方法时, 前一个画面就会被取代掉, 因此开发人员必须自行将前一个画面与其状态保留起来, 并控制整个程序中画面的切换才行 52 图 3-1 LCDUI 包的体系结构 高级用户界面的类结构 高级屏幕对象分为以下两个范畴 (1) 封装了复杂的用户界面组件的屏幕对象 ( 例如类 List Alert 或者 TextBox 等 ) 这些屏幕类的结构是定义好的, 应用程序不能在这些屏幕对象上添加其他组件 (2) 通用的屏幕对象 ( 例如 Form), 应用程序可以在这个屏幕对象中添加 删除 修改文本 图像和简单的相关 UI 组合集合 Display 类负责管理显示这些屏幕对象 ( 也包括低级屏幕对象 Canvas 类 ), 每个 MIDlet 都有一个 Display 实例, 通过它可以获取关于设备显示屏幕的基本性能信息 Screen 类和 Canvas 类都是 Displayable 类的子类, 通过调用 Display 的方法 setcurrent() 可以使屏幕对象可见 高级屏幕对象都是 Screen 类的子类, 其中三个预定义好的子类如下 (1)List: 允许从三个预定义的选项组中选择, 常用以选择 (2)TextBox: 是一个比较简单的文本编辑器, 常用于输入文本 (3)Alert: 显示包含图片或文字的临时信息或者简单问询, 常用于提示信息 另外的子类 Form 是一个特殊的子类, 它更像一个容器 每个 Form 都可以添加下面 Item 子类的组合 (1)StringItem: 用于静态文本显示, 或者作为一个按钮或超链接 (2)ImageItem: 用于静态图像显示, 或者作为一个图标或超链接 (3)TextField: 用于带约束的文本类型输入 (4)DateField: 用于时间或者日期值的显示或输入

3 (5)Gauge: 用于进度条或者来自某个特定范围的数值输入 (6)ChoiceGroup: 用于一个选项集合的单选或多选 高级用户界面除了以上 4 个 Screen 屏幕类外, 还有 Command 类来完善高级事件机制, 从而实现用户界面交互功能 Ticker 类实现了滚动条功能, 可以添加到所有的 Screen 子类中 Choice 接口封装了用于选择的基本功能,Screen 的子类 TextBox 以及 Form 的 Choice- Group 组件实现了该接口 高级用户界面主要的类和接口结构如图 3-2 所示 图 3-2 高级用户界面主要的类和接口 Display 和 Displayable 类 1.Display 类 MIDP 的用户接口的基本设置是 Display 类和 Displayable 类 用 Displayable 对象表示画面本身,Display 对象是控制这个画面的显示管理器 MIDP 中使用类 Display 进行用户界面的管理, 负责与应用程序管理器进行交互 通过以 MIDlet 实例作参数调用静态方法 getdisplay(), 应用程序获得一个 MIDlet 对象 midlet 的 Display 对象实例 : Display display=display.getdisplay(midlet); // 获得 MIDlet 的 Display 对象获得 Display 的实例之后, 应用程序可以通过 Display 类的方法改变设备上显示的 Displayable 对象 使用如下方法, 设置需要显示的内容显示到屏幕上 : public void setcurrent(displayable nextdisplayable); 上面的方法中带一个参数, 参数就是要设置显示的对象, 该对象必须是 Displayable 的子类即 Canvas 子类或 Screen 子类中的一种 (Canvas 类和 Screen 类继承自 Displayable, 继承关系如图 3-2 所示 ) 假如有一个继承 Canvas 类的 Mycanvas 类, 并且这个类做的事情是显示一张图, 现在要让手机屏幕把这个 Mycanvas 类的对象 mycanvas 显示出来, 具体的方 53 第 3 章高级用户界面

4 J2ME 手机游戏开发技术与实践 ( 第 2 版 ) 法如下 : Display.setCurrent(mycanvas);// 设置 mycanvas 为当前屏幕显示的对象 54 设置成 mycanvas 后,mycanvas 显示的那张图就会出现在手机屏幕上 2.Displayable 类 Displayable 是一个抽象类, 它有两个子类 :Screen 类和 Canvas 类 每个子类及其子类的子类都可以作为一个 Displayable Displayable 对象具有以下特点 (1) 在屏幕上可以显示的对象都是 Displayable 对象, 而且在同一个时刻只能显示一个 Displayable 对象 (2)Displayable 对象可以添加零到多个 Command 按键 (3) 可以通过按键监听 (CommandListener) 控制按键响应 Displayable 与开发并没有直接关系 ( 因为它是抽象类 ), 最重要的就是它的两个子类 Screen 和 Canvas 3.2 Command 类与高级事件处理 Command 类 Command 类封装了游戏中的命令行为 ( 退出及开始游戏等 ) 的语义信息, 它只包含命令的信息, 而不是激活命令时实际执行的功能 操作在 CommandListener 接口中定义 可以使用如下方法构造一个新的 Command 对象 : Command comok=new Command("ok",Command.OK,1);// 创建 "ok" 命令对象 comok 构造方法中有三个参数 : 标签 类型和优先级 标签就是在屏幕上可显示的内容, 用以标识按键的功能信息, 本例中为 ok ; 类型是指明按键的意图, 本例中的 Command.OK 就可以表示确定或选中的意思 ; 优先级是用来描述在同一个屏幕上的同一类型的按键之间显示的先后顺序, 数字越小表示优先级越高 (1) 标签 : 每个按键都会包含一个标签字符串, 该标签字符串是应用程序用来显示给用户的, 以表示某个按键的名称 (2) 类型 : 应用程序使用按键类型指明按键的意图, 如果应用程序指定某个按键的类型为 BACK, 并且假设设备有一个确定的按键对应标准的后退操作, 则 MIDP 实现使用这个语义信息作为依据, 从而保持设备的风格 (3) 优先级 : 应用程序用优先级的值来描述在同一个屏幕上一个按键相对于其他按键的重要程度 优先级的值是一个整数, 数值越小的表明重要程度越高, 实际的值由应用程序选择 值为 1 表明这是一个最重要的按键, 其他依次为 2 3 和 4 等 不同种类的按钮, WTK 优先级排序 :ITEM SCREEN OK HELP BACK EXIT CANCEL STOP, 优先级高的按钮优先显示在上方 同一种类的按钮, 在构造函数内划分优先级, 数字越小越优先 BACK CANCEL EXIT 和 STOP 倾向于抢占左方, 优先顺序为 :BACK CANCEL EXIT 和 STOP 不同的按键之间比较优先级没有意义

5 注意 : 只是在 WTK 内满足这个规律, 其他模拟器可能不相同 创建了 Command 对象之后, 通过 Displayable 类的 addcommand() 方法和 remove- Command() 方法增加或者删除命令 实例 3-1 命令对象 import javax.microedition.lcdui.*; import javax.microedition.midlet.midlet; import javax.microedition.midlet.midletstatechangeexception; public class CmdDemo extends MIDlet private Form frm; private Display dis; private Command cmddel; private Command cmdedit; private Command cmdexit; private Command cmdback; public CmdDemo() frm = new Form(" 请您选择相应操作 "); frm.append("hello! 大家好!"); cmddel = new Command(" 删除该号码 ",Command.SCREEN,1); cmdedit = new Command(" 编辑该号码 ",Command.SCREEN,1); cmdexit = new Command(" 退出该程序 ",Command.SCREEN,1); cmdback = new Command(" 返回 ",Command.BACK,1); protected void destroyapp(boolean arg0) throws MIDletStateChange Exception // TODO Auto-generated method stub protected void pauseapp() // TODO Auto-generated method stub protected void startapp() throws MIDletStateChangeException dis = Display.getDisplay(this); // 获得当前 MIDlet 上的显示对象 dis.setcurrent(frm); // 将 frm 设置为当前界面 frm.addcommand(cmddel); frm.addcommand(cmdedit); frm.addcommand(cmdexit); frm.addcommand(cmdback); 上面的实例主要在窗体上显示字符串并增加 4 个命令按键, 按照前面所讲的有关优先级的知识,BACK 类型的按键会抢占左方位置, 显示结果如图 3-3 所示 高级事件处理 55 在前面代码中添加的 Command 按键没有实际作用, 因为没有实现相应的用户事件, 因此应用程序为 Command 对 图 3-3 命令对象实例 第 3 章高级用户界面

6 J2ME 手机游戏开发技术与实践 ( 第 2 版 ) 56 象设置一个按键监听器 (CommandListener) 实现的类, 它负责接收来自 MIDP 实现的高级事件, 应用程序可以实现 CommandListener 接口, 或者使用一个嵌套类或内部类 综合前面的 Displayable 类和 Command 类, 下面实现了一个带有高级事件的 MIDlet 程序 实例 3-2 高级事件 import javax.microedition.lcdui.*; import javax.microedition.midlet.*; public class CmdListenerDemo extends MIDlet implements CommandListener private Command cmd1; private Form frm; public CmdListenerDemo() frm = new Form(" 事件响应演示 "); cmd1= new Command(" 退出 ", Command.EXIT,1); protected void startapp() throws MIDletStateChangeException Display.getDisplay(this).setCurrent(frm); // 显示当前界面 frm frm.addcommand(cmd1); // 增加命令按键 // 注意在 J2SE 中是直接绑定控件, 但在 J2ME 中是绑定 Displayable 对象 frm.setcommandlistener(this); // 绑定 frm 界面与实现了 CommandListener 接 // 口的类对象 protected void destroyapp(boolean arg0)throws MIDletStateChangeException // TODO Auto-generated method stub protected void pauseapp() // TODO Auto-generated method stub // 重写 commandaction 方法 public void commandaction(command c, Displayable d) // TODO Auto-generated method stub if (c==cmd1) System.out.println(" 按钮被按下啦 "); // 按下命令按键时在控制台输出字符串 this.notifydestroyed(); // 程序结束退出 上例程序运行时, 按下退出按键, 在命令控制台上就会显示 按钮被按下啦, 然后程序结束退出 3.3 高级界面类 Screen 类 高级用户界面是指输入框和列表框等界面, 一般是在手机应用软件中使用, 游戏开发中用得比较少, 只有在低级用户界面没办法满足游戏需求的时候才会使用高级用户界面,

7 如有的游戏需要输入玩家名字, 那就需要用到输入框了 Screen 类继承了 Displayable, 它是高级界面 API, 封装了完整的用户界面组件 (TextBox List Alert 及 Form) 的高层对象 其子类的对象可以作为参数传递给方法 : public void setcurrent(displayable nextdisplayable); 用来在手机屏幕上显示高级屏幕组件 Screen 类是所有高级用户界面类的公共父类, 在 Displayable 类的基础之上增加了可选的标题和滚动条 (Ticker) 两个属性, 要显示的内容以及用户的交互由其子类定义 TextBox List Alert 及 Form 都是 Screen 类的子类, 下面对它们的功能和用法分别进行介绍 TextBox 组件 TextBox 组件允许用户输入并且编辑文本, 当游戏中需要输入一些信息的时候就需要用到它, 例如, 很多游戏的高分榜都需要输入玩家的姓名, 所以 TextBox 组件是一个在游戏开发中常用的组件 TextBox 的构造方法形式如下 : TextBox(String Title,String text,int maxsize,int constraints) 构造方法有 4 个参数, 第 1 个参数是这个组件的标题 ; 第 2 个参数是初始的内容 ; 第 3 个参数是可输入的最大长度 ; 第 4 个参数是限制输入的内容 限制的内容是用来限制当前要输入的内容是什么类型的, 可以限定只能输入数字, 也可以限定只能输入字母, 表 3-1 列出了 TextField 对应的 7 种类型的限制内容 限制参数 TextField.ANY TextField. ADDR TextField.NUMBER TextField.PASSWD TextField.PHONENUMBER TextField.URL TextField.DECIMAL 表 3-1 TextField 的限制参数功能任意文字邮件地址整数口令电话号码网络地址数字 下面给出一段代码实例, 看一下具体的用法 实例 3-3 使用 TextBox import javax.microedition.midlet.*; // 引用 MIDlet 包 import javax.microedition.lcdui.*; // 引用图形用户界面 public class TextDemo extends MIDlet // 继承 MIDlet 类 private Display display; // 创建 display 对象 TextBox tb=new TextBox("TextBox 测试 ","TextBox 测试内容如下 :",20,TextField. ANY); // 创建新的 TextBox tb, 名字为 test, 可输入 20 个字符, 可输入任意类型 // 这里选用的参数为任意文字, 可以修改成别的参数进行测试 public TextDemo() 57 第 3 章高级用户界面

8 J2ME 手机游戏开发技术与实践 ( 第 2 版 ) 58 // 获取当前 MIDlet 的 Display 对象 display=display.getdisplay(this); protected void startapp() throws MIDletStateChangeException // 通过 display 调用 TextBox 的对象 tb 显示 display.setcurrent(tb); public void pauseapp() // 暂停功能 public void destroyapp(boolean b) /// 销毁功能 protected void destroyapp(boolean arg0) throws MIDletStateChangeException // TODO Auto-generated method stub 运行代码后, 显示结果如图 3-4 所示 List 组件 List 是一个包含选择列表的 Screen 子类, 在 List 对象中可以加入多个文本字符串条目, 每个条目还可以带图片 当 List 对象太多超出屏幕时, 会自动提供滚动机制 ( 如使用上下移动键 ) List 常用的构造方法形式如下 : List(String title,int listtype) 两个参数分别是屏幕标题和列表类型 列表类型有三种, 分别为 EXCLUSIVE( 单选类型 ) MULTIPLE( 多选类型 ) 和 IMPLICIT( 互斥类型, 通过隐式按钮实现 ) 图 3-4 使用 TextBox 显示结果另外一个构造方法可以设置一个字符串数组和图像类型数组, 用来对 List 的内容做初始化 如果不采用这种形式构造, 其工作也可以在构造之后单独进行 形式如下 : List(String title,int listtype,string[] stringelements,image[] imageelements) 其中,stringElements 是字符串数组, 可以指定具体的列表选项 ;imageelements 可以指定具体的列表选项以及列表选项的图标 List 的常用方法如表 3-2 所示 表 3-2 List 的常用方法 方法 int append(string stringpart, Image imagepart) void delete(int elementnum) String getstring(int elementnum) int getselectedindex() 功能添加一个选项到列表中删除索引值为 elementnum 的选项获得索引值为 elementnum 的选项的图片返回所选条目的下标

9 方法 void setfitpolicy(int fitpolicy) int size() void setselectedflags(boolean[] selectedarray) void setticker(ticker ticker) void settitle(string s) 功能设置列表的布局方式获取现有元素的数目设置被选择数组设置滚动条设置标题 续表 1.EXCLUSIVE 类型用户在所有选项中只能选择一项, 用户选择一个选项时, 前面选择的将被取消, 焦点转移到当前选择的选项上, 在选择或取消选择时不会触发事件, 所以通常会使用 Command, 当 Command 被触发时, 利用 List 的 getselectedindex() 方法来判断是哪一个选项被选择 程序示例如下 实例 3-4 List 组件使用一 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class ListTest extends MIDlet implements CommandListener private Command cmdcommit; private Display display; public ListTest() display = Display.getDisplay(this); cmdcommit = new Command(" 确定 ", Command.OK,1); public void startapp() List l = new List(" 游戏项目 ",Choice.EXCLUSIVE); l.setcommandlistener(this); // 监听命令按键 l.append(" 五子棋 ",null); // 增加 五子棋 选项 l.append(" 斗地主 ",null); // 增加 斗地主 选项 l.append(" 象棋 ",null); // 增加 象棋 选项 l.addcommand(cmdcommit); display.setcurrent(l); public void pauseapp() public void destroyapp(boolean unconditional) public void commandaction(command c, Displayable s) if (c == cmdcommit) List tmp = (List) s; // 控制台打印选项 int selected = tmp.getselectedindex(); // 获得当前选项的索引 System.out.println("Item" + selected + "selected"); // 控制台打印选项 switch(selected) 59 第 3 章高级用户界面

10 J2ME 手机游戏开发技术与实践 ( 第 2 版 ) 60 case 0: display.setcurrent( new TextBox("TestList"," 五子棋 ",256,0)); break; case 1: display.setcurrent( new TextBox("TestList"," 斗地主 ",256,0)); break; case 2: display.setcurrent(new TextBox("TestList"," 象棋 ",256,0)); 上例程序在 List 中添加了三个选项, 当选择其中一项后可按 确定 键进入相应的文本显示, 运行结果如图 3-5 所示 图 3-5 EXCLUSIVE 类型的运行结果 2.MULTIPLE 类型选择操作会固定焦点元素的选择状态, 应用程序不会获得通知, 这种类似于复选框, 用户可以选择 0 或多个选项, 选择动作不会触发事件, 所以仍需要借由 Command 来触发 当选项被用户选择之后, 首先使用 List 的 size() 方法得到 List 之中有多少个选项, 再循环使用 isselected() 方法来判定各个选项是否被选择 程序示例如下 实例 3-5 List 组件使用二 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class ListMutest extends MIDlet implements CommandListener private Command cmdcommit; private Display display; public ListMutest () display = Display.getDisplay(this); cmdcommit = new Command(" 确定 ", Command.OK,1);

11 public void startapp() List l = new List(" 游戏项目 ",Choice.MULTIPLE); l.setcommandlistener(this); // 监听命令按键 l.append(" 五子棋 ",null); l.append(" 斗地主 ",null); l.append(" 象棋 ",null); l.addcommand(cmdcommit); display.setcurrent(l); public void pauseapp() public void destroyapp(boolean unconditional) public void commandaction(command c, Displayable s) if (c == cmdcommit) List tmp = (List) s; // 控制台打印选项 int num = tmp.size(); for(int i = 0; i < num;i++) if(tmp.isselected(i)) // 选择需要的选项 System.out.println("Item" + i + "selected"); // 控制台打印选项 程序运行结果如图 3-6 所示 3.IMPLICIT 类型与前面两种不同, 对于这种类型的 List, 如果设置了 CommandListener, 选择操作会立即被通知到应用程序 在调用这个 List 的 CommandListener() 方法之前, 获得焦点的元素将被选择,SELECT_COMMAND 是用于事件通知的固有参数 程序示例如下 实例 3-6 List 组件使用三 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; 图 3-6 MULTIPLE 类型的运行结果 public class ListImplitest extends MIDlet implements CommandListener private Command exitcommand; private Display display; public ListImplitest() display = Display.getDisplay(this); exitcommand = new Command("Exit", Command.EXIT,1); public void startapp() 61 第 3 章高级用户界面

12 J2ME 手机游戏开发技术与实践 ( 第 2 版 ) 62 List l = new List(" 游戏项目 ",Choice.IMPLICIT); l.setcommandlistener(this); // 监听命令按键 l.append(" 五子棋 ",null); // 增加选项 l.append(" 斗地主 ",null); l.append(" 象棋 ",null); l.addcommand(exitcommand); display.setcurrent(l); public void pauseapp() public void destroyapp(boolean unconditional) public void commandaction(command c, Displayable s) if (c == exitcommand) notifydestroyed(); // 按 Exit 按键退出 If (c == List.SELECT_COMMAND) // 选择选项时立即响应 List tmp = (List)s; // 控制台打印选项 int selected = tmp.getselectedindex(); System.out.println("Item" + selected + "selected"); // 控制台打印选项 switch(selected) case 0: display.setcurrent(new TextBox("TestImplictList"," 五子棋 ",256,0)); break; case 1: display.setcurrent(new TextBox("TestImplictList"," 斗地主 ",256,0)); break; case 2: display.setcurrent(new TextBox("TestImplictList"," 象棋 ",256,0)); break; 运行程序, 选择其中的一个选项, 按下模拟器中间的确认键, 即可显示相应的文本内容, 显示结果如图 3-7 所示 Alert 组件 Alert 是一个比较特殊的屏幕型对象 (Screen 类的子类 ), 当利用 Display 类的 setcurrent() 方法将它设为目前显示在屏幕上的画面时, 它会先发出一段声音, 然后将自己显示在屏幕上, 过一段时间之后, 它会自动跳回之前的画面 请注意, 调用 Display 类的 setcurrent() 方法将 Alert 设为目前显示在屏幕上的画面之前, 系统本身一定要存在一个画面, 这样才能让 Alert 有地方可以跳回 (Alert 的默认行为 ) 因

13 此, 如果在 MIDlet 一启动直接就将 Alert 设为第一个显示在屏幕上的画面, 会出现错误信息, 除非利用 setcommandlistener() 方法设定了自己的事件处理函数 图 3-7 IMPLICIT 类型的运行结果 由于 Alert 这种与众不同的特性, 所以基本上可以把它看作是窗口系统上所使用的对话框 一般印象中的对话框会一直显示在屏幕上, 等待用户确定之后, 它才会回到原先的画面 因此 Alert 最适合用来作一般应用程序常见的启动画面 (Splash Screen) 这时可以利用 Display 有两个参数的 setcurrent() 方法 Alert 类有两个构造方法, 第一个构造方法只需要指定 Alert 的标题, 而不用设定所有属性, 而第二个构造方法需要指定标题 内容 图像和警告类型 例如 : // 构造方法, Alert 标题为 Hello Alert alert = new Alert("Hello"); // 设置图片 alert.setimage(icon); // 设置内容 alert.setstring(" 游戏设计讲解 "); // 设置延时 alert.settimeout(3000); // 设置类型 alert.settype(alerttype.error); 上面的代码等价于下面的构造方法 : Alert alert = new Alert("Hello", " 游戏设计讲解 ", icon, AlertType.ERROR); 警告的类型有以下几种 (1)ALARM( 警报 ): 向用户警告一个事件, 它是用户预先请求的通知 (2)CONFIRMATION( 确定 ): 用来确认一个用户动作, 比如用户在保存操作完成之后, 可以显示这样一条消息 数据已经成功保存 (3)ERROR( 错误 ): 向用户警告一个错误操作, 比如 内存不足, 无法保存数据 (4)INFO( 通知 ): 一般向用户提示非危险性信息, 比如可以用它来制作简单的闪屏 (5)WARNING( 警告 ): 向用户警告一个危险操作, 比如 该操作将删除所有数据 63 第 3 章高级用户界面

14 J2ME 手机游戏开发技术与实践 ( 第 2 版 ) 64 定义好 Alert 类之后, 通过调用 Display.setCurrent() 方法来显示, 可以使用方法 Display.setCurrent(Displayable nextdisplayable), 因为考虑 Alert 类是 Screen 的子类, 可以作为 Displayable 参数传递给此方法 程序示例如下 实例 3-7 Alert 组件的应用 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class AlertTest extends MIDlet private Display display; public AlertTest() display = Display.getDisplay(this); boolean registered = false; public void startapp() Form f = new Form(" 主画面 "); f.append(" 请您在此处注册 "); display.setcurrent(f); // 在此判断用户是否注册了 if(!registered) Alert al = new Alert(" 您还没有注册 "); al.settype(alerttype.warning); al.settimeout(alert.forever); al.setstring(" 您应该尽快注册!"); display.setcurrent(al); public void pauseapp() public void destroyapp(boolean unconditional) 程序运行结果如图 3-8 所示 图 3-8 Alert 的运行结果

15 3.4 屏幕表单 (Form 类 ) 及其组件 Form 类 Form 类是一个典型的容器控件类, 用于包含其他高层用户界面控件, 一般不单独显示在屏幕上, 它可以容纳其他可视组件 (Item), 它们都是 Item 类的子类 Item 类是表单组件对象通用属性或方法的一个集合 Form 类提供了方法对表单组件进行操作, 例如添加 删除及插入等, 或者获得表单组件的引用, 从而直接对组件内容进行操作 Form 类是 Screen 的子类, 它可以包含以下 8 种组件的任意组合 :TextField( 文本组件 ) StringItem( 字符串组件 ) ImageItem( 图像组件 ) DataField( 日期组件 ) ChoiceGroup ( 选项集合 ) Gauge( 标尺 ) 以及 MIDP 2.0 引入的 CustomItem( 自定义组件 ) 和 Spacer ( 占位符 ) 这些元素都是 Item 类的子类, 即 Form 类作为一个容器, 可以容纳 Item 子类的组件 MIDP 实现可处理 Form 的布局, 元素的切换和滚动, 包含在 Form 中的任何组件都没有任何滚动机制, 而是整个内容一起滚动 Form 类所提供的常用方法如表 3-3 所示 表 3-3 Form 类的常用方法方法功能 int append(image img) 向表单的末尾添加图像 int append(item item) 添加一个 Item 的子类对象 int append(string str) 添加字符串 void delete(int itemnum) 从表单中删除指定位置的项目, 并使表单的大小减 1 Item get(int itemnum) 取得表单中指定位置的项目 void insert(int itemnum,item item) 在指定的索引之前向表单插入一个项目 int set(int itemnum,item item) 把 itemnum 引用的项目设置成指定的 Item, 从而替换原来的项目 int size() 得到表单当前的项目数量 Form 类的构造方法有以下两种形式 Form(String title) // 创建一个有标题的没有项目的 Form 对象 使用上面这种构造方法后要结合 append() 方法或 insert() 方法动态地插入元素, 例如 : Form myform = new Form (" 表单演示 "); myform.append(item); 另外一种构造方法是 Form(String title, Item[] item), 可以用来创建一个有标题 有项目元素的 Form 对象 下面是 Form 类的构造方法的程序示例 实例 3-8 Form 的应用 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; 65 第 3 章高级用户界面

16 J2ME 手机游戏开发技术与实践 ( 第 2 版 ) 66 public class FormTest extends MIDlet implements CommandListener private Display display; private List list; private Form form1; private Form form2; private Command exit; private Command back; public FormTest() display = Display.getDisplay(this); back = new Command(" 返回 ", Command.BACK, 0); exit = new Command(" 退出 ", Command.EXIT, 1); list = new List(" 表单的例子 ",List.IMPLICIT); list.append(" 第一个游戏 : 雷电 ", null); // 列表项一 list.append(" 第二个游戏 : 功夫熊猫 ", null); // 列表项二 list.addcommand(exit); list.setcommandlistener(this); form1 = new Form(" 第一个游戏说明 "); // 表单的第一种构造方法 form1.append(" 雷电简介 : 基本操作说明 "); // 增加文本内容 form1.append(" 雷电关卡 : 关卡介绍 "); // 增加文本内容 form1.addcommand(back); form1.setcommandlistener(this); // 监听表单 StringItem[] str = new StringItem(" 功夫熊猫简介 :"," 基本剧情 "), new StringItem(" 熊猫招数 :"," 招数说明 "); form2 = new Form(" 第二个游戏说明 ", str); // 表单的第二种构造方法 form2.addcommand(back); form2.setcommandlistener(this); public void startapp() display.setcurrent(list); public void pauseapp() public void destroyapp(boolean condition) public void commandaction(command command, Displayable displayable) if(command == List.SELECT_COMMAND) switch(((list)displayable).getselectedindex()) case 0: display.setcurrent(form1); break; case 1: display.setcurrent(form2); break; if(command == back) display.setcurrent(list); if(command == exit) // 根据所选选项的索引进行 // 相应的操作

17 destroyapp(false); notifydestroyed(); 程序运行结果如图 3-9 所示 图 3-9 Form 程序运行结果 Item 类和 Item 状态监听 Item 类的子类是 Form 中的组件 Item 有 8 个直接子类, 下面主要介绍其中常用的 6 个, 如表 3-4 所示 表 3-4 Item 常用子类 Item 子类名称 StringItem TextField DataField Gauge ChoiceGroup ImageItem 描述在用户界面显示字符串单行的输入区域用于输入日期的 TextField 显示进度以及从一个范围中选取一个值的控件类似于单选框 复选框的控件显示图片的控件 1.StringItem StringItem 是包含一个字符串的 Form( 表单 ) 组件, 只用来显示而不能编辑内容, 但应用程序可以更改它的标签和文本内容 StringItem 的构造方法形式如下 : StringItem(String label,string text) 其中需要两个参数 label 和 text, 分别用来构造 StringItem 的标签和文本内容, 也可以把它们设置为 null, 表示标签或文本为空 程序示例如下 实例 3-9 StringItem 的应用 67 import javax.microedition.midlet.*; 第 3 章高级用户界面

18 J2ME 手机游戏开发技术与实践 ( 第 2 版 ) import javax.microedition.lcdui.*; 68 public class StringItemTest extends MIDlet implements CommandListener private Display display; Command commit; public StringItemTest() display = Display.getDisplay(this); public void startapp() commit = new Command(" 确定 ",Command.SCREEN,1); Form f = new Form("StringItem 测试 "); f.append(" 开始游戏 "); f.append(new StringItem(null," 游戏介绍 ")); // 增加字符串组件对象 f.append(new StringItem(" 超级玛莉 "," 主人公介绍 ")); f.append(new StringItem(" 蘑菇道具 "," 道具的使用 ")); f.addcommand(commit); f.setcommandlistener(this); display.setcurrent(f); public void pauseapp() public void destroyapp(boolean unconditional) public void commandaction(command c,displayable s) Form tmp = (Form) s; for(int i = 0; i < tmp.size(); i++) StringItem si = (StringItem)tmp.get(i);// 获得当前选项 System.out.println(si.getText()); // 在控制台输出当前选项的文本内容 程序运行结果如图 3-10 所示 2.TextField 在和手机交互的过程中, 文本输入框是最常见的 例如, 输入姓名 电话号码 网址及短信等,J2ME 中提供了 TextField 这个控件 TextField 和 TextBox 有点相似, 可用于文本的显示和编辑 不过 TextBox 是多行的, 而 TextField 是单行的 而且 TextBox 是全屏类型的对象,TextField 是 Item 的直接子类, 只能被容器包含, 不能够单独显示 TextField 的构造方法形式如下 : public TextField(String label,string text,int maxsize,int constraints) 图 3-10 StringItem 程序运行结果构造方法中有 4 个参数,label 表示组件标签 ;text 表示初始的文本内容, 如果要设置为空则使用 null;maxsize 表示字符的最大容量, 与 TextBox 中的意义和用法相同 ;constraints 表示输入约束, 与 TextBox 中的意义和用法相同 程序示例如下 实例 3-10 TextField 的应用 import javax.microedition.midlet.*;

19 import javax.microedition.lcdui.*; public class TextFieldTest extends MIDlet implements ItemStateListener private Display display; Command commit; public TextFieldTest() display = Display.getDisplay(this); public void startapp() commit = new Command(" 确定 ",Command.SCREEN,1); Form f = new Form("TextFieldTest"); // 在当前表单下添加文本框 f.append(new TextField(" 请输入玩家名称 :"," 孙大圣 ",4,TextField.ANY)); f.addcommand(commit); display.setcurrent(f); public void pauseapp() public void destroyapp(boolean unconditional) 程序运行结果如图 3-11 所示 3.ItemStateListener 接口当放置于 Form 内部的组件状态发生改变时,Form 组件会对所有经由 setitemstate Listener() 方法向它注册的类中的 itemstatechanged() 方法发出状态改变的消息 ItemStateListener 只在用户交互中组件状态真的被改变时,itemStateChanged() 方法才被调用 应用程序使用 ItemStateListener 接口来接收 Form 对象内可交互组件的事件, 这些事件用来指示组件内部状态的改变 以下操作会调用 itemstatechanged (Item item ) 方法 (1) 输入或者改变了 TextField 中的值 ; (2) 改变 ChoiceGroup 中的选择状态 ; 图 3-11 TextField 程序运行结果 (3) 调整了 Gauge 的值 ; (4) 在 DateField 中输入一个新的日期或时间 在上例的 TextField 中, 如果需要如下操作 : 只要用户改变了 TextField 的内容, 就在控制台上输出 TextField 的内容, 需要使用 ItemStateListener 接口, 则首先让主类实现 ItemStateListener 接口 public class TextFieldTest extends MIDlet implements ItemStateListener 随后注册监听 : f.setitemstatelistener(this); 最后, 实现 ItemStateListener 接口里的 itemstatechanged() 方法 : 69 Public void itemstatechanged(item item) 第 3 章高级用户界面

20 J2ME 手机游戏开发技术与实践 ( 第 2 版 ) 70 完整代码实现如下 实例 3-11 ItemStateListener 接口的应用 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class ItemStaListest extends MIDlet implements ItemStateListener private Display display; Command commit; public ItemStaListest() display = Display.getDisplay(this); public void startapp() commit = new Command(" 确定 ",Command.SCREEN,1); Form f = new Form("TextFieldTest"); f.append(new TextField(" 请输入玩家名称 :"," 孙大圣 ",4,TextField.ANY)); f.addcommand(commit); f.setitemstatelistener(this); // 注册监听表单里的组件状态 display.setcurrent(f); public void pauseapp() public void destroyapp(boolean unconditional) public void itemstatechanged(item item) // 当文本框内容改变时触发此方法 TextField tmp = (TextField)item; // 转换成 TextField 类型 System.out.println(tmp.getString()); // 在控制台输出文本框中的内容 每当用户改变 TextField 的内容时,itemStateChanged() 方法就会被调用 其中的参数是发生变化的 Item 对象 对其进行处理之前, 需将其转换为相应的子类对象, 即 TextField 对象 最后使用 TextField 的 getstring() 方法取得 TextField 的文本内容 4.ChoiceGroup ChoiceGroup 定义了一组可以放在窗体中的可选元素 它与 List 类似, 但最大不同在于 ChoiceGroup 必须依附在 Form 之中才有用, 而且只有 Choice.EXCLUSIVE( 单选 ) Choice.MULTIPLE ( 多选 ) 及 Choice.POPUP ( 弹出式菜单 ) 三种类型, 无法使用 Choice.IMPLICIT 类型 ChoiceGroup 的构造方法形式如下 : Public ChoiceGroup(String label,int choicetype) public ChoiceGroup(String label, int choicetype, String[] values, Image[] images); 第 1 个参数定义一个 label, 一个可选字符串, 显示在 ChoiceGroup 的上方或旁边 如果不需要 label 就传递 null 第 2 个参数定义选择方式 第 1 种构造函数创建一个空的 ChoiceGroup, 内容在运行时是变化的情况下才有用 如果一个 ChoiceGroup 的内容是静态的, 则使用第 2 种构造函数的第 3 和第 4 个参数定义其初始内容, 如下所示 : public static final String[] values = new String[] "Apples", "Oranges", "Bananas"; ChoiceGroup cg = new ChoiceGroup("Fruit", Choice.MULTIPLE,values,null);

21 无论 ChoiceGroup 是如何被初始化的, 都可以在运行时改变它的设置值, 即使用 append() delete() 及 insert() 等方法来实现 程序示例如下 实例 3-12 ChoiceGroup 的应用 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class ChoiceGroupTest extends MIDlet implements ItemStateListener private Display display; private Form myform; // 声明三个 ChoiceGroup private ChoiceGroup myexclusivechoicegroup; private ChoiceGroup mymultiplechoicegroup; private ChoiceGroup mypopchoicegroup; // 通过 StringItem 将选中的信息显示出来 private StringItem mychoice; // 构造方法 public ChoiceGroupTest() // 初始化 display=display.getdisplay(this); mychoice=new StringItem(" 玩家基本信息 :",null); myform=new Form("ChoiceGrop 实例测试 "); // 采用两个参数的构造方法创建 ChoiceGroup 对象, 类型是单选按钮 myexclusivechoicegroup=new ChoiceGroup(" 选择性别 ",Choice.EXCLUSIVE); myexclusivechoicegroup.append(" 男 ", null); myexclusivechoicegroup.append(" 女 ", null); // 采用 4 个参数的构造方法创建 ChoiceGroup 对象, 类型是多选按钮 String [] aihaotype=" 看书 "," 篮球 "," 乒乓球 "," 爬山 "," 音乐 "; mymultiplechoicegroup=new ChoiceGroup(" 爱好 ",Choice.MULTIPLE,aihao Type,null); // 采用两个参数的构造方法创建 ChoiceGroup 对象, 类型是弹出式 mypopchoicegroup=new ChoiceGroup(" 选择婚姻状况 ",Choice.POPUP); mypopchoicegroup.append(" 已婚 ", null); mypopchoicegroup.append(" 未婚 ", null); myform.append(myexclusivechoicegroup); // 将 Item 对象添加到 form 中进行显示 myform.append(mymultiplechoicegroup); myform.append(mypopchoicegroup); myform.append(mychoice); myform.setitemstatelistener(this); // 注册监听 protected void destroyapp(boolean arg0) throws MIDletStateChangeException protected void pauseapp() protected void startapp() throws MIDletStateChangeException display.setcurrent(myform); public void itemstatechanged(item item) // 对应的各个 ChoiceGroup 被改变时, 将其通过 StringItem 显示出来 if(item==myexclusivechoicegroup) // 如果是单选类型 int index=myexclusivechoicegroup.getselectedindex(); // 获取所选项目 // 索引 71 第 3 章高级用户界面

22 J2ME 手机游戏开发技术与实践 ( 第 2 版 ) 72 // 设置所选择项目索引的字符串在 mychoice 中显示 mychoice.settext("\n"+myexclusivechoicegroup.getstring(index) +"\n"); if(item==mymultiplechoicegroup) // 如果是多选类型 String tmp="\n"; for(int i=0;i<mymultiplechoicegroup.size();i++) boolean index=mymultiplechoicegroup.isselected(i); if(index) // 判断是否选择了某项目 tmp=tmp+mymultiplechoicegroup.getstring(i)+"\n"; mychoice.settext(tmp); if(item==mypopchoicegroup) // 如果是弹出类型 int index=mypopchoicegroup.getselectedindex(); mychoice.settext("\n"+mypopchoicegroup.getstring(index)+"\n"); 上例程序分别用到了 ChoiceGroup 的两种构造方法, 并使用了它的三种类型, 对于每种类型的 ChoiceGroup 都可以选择项目, 并在 mychoice 中显示出来 程序运行结果如图 3-12 所示 图 3-12 ChoiceGroup 程序运行结果 如果想把选择的信息全部放在 mychoice 里面, 可以将方法 itemstatechanged(item item) 中的代码进行如下修改 public void itemstatechanged(item item) mychoice.settext("\n");

23 int index=myexclusivechoicegroup.getselectedindex(); mychoice.settext(mychoice.gettext()+myexclusivechoicegroup.getstring (index)+"\n"); String tmp=""; for(int i=0;i<mymultiplechoicegroup.size();i++) boolean index1=mymultiplechoicegroup.isselected(i); if(index1) tmp=tmp+mymultiplechoicegroup.getstring(i)+"\n"; mychoice.settext(mychoice.gettext()+tmp); int index2=mypopchoicegroup.getselectedindex(); mychoice.settext(mychoice.gettext()+mypopchoicegroup.getstring(index2) +"\n"); 修改代码后, 程序运行结果如图 3-13 所示 图 3-13 ChoiceGroup 修改后的程序运行结果 5.Gauge Gauge 的用途非常广泛, 一般常用于让用户做大小调整, 或是当作进度指示器使用 Gauge 的构造方法形式如下 : public Gauge(String label,boolean interactive,int maxvalue,int initial Value) 参数 label 代表标尺的名称 interactive 可以是 true 或 false, 代表交互标尺或非交互标尺, 在交互模式中, 用户可以修改指示器的当前值 通常, 用户可以使用移动电话的左右两个方向按键来增加或者减小标尺的值 在非交互模式中, 用户不能修改当前值 maxvalue 代表标尺的最大值, 必须大于 0 initialvalue 代表标尺的初始值 程序示例如下 实例 3-13 Gauge 的应用 73 import javax.microedition.lcdui.*; import javax.microedition.midlet.*; 第 3 章高级用户界面

24 J2ME 手机游戏开发技术与实践 ( 第 2 版 ) 74 public class GaugeTest extends MIDlet implements ItemStateListener private Display display; Gauge g1; // 声明 Gauge 对象引用 g1 Gauge g2; // 声明 Gauge 对象引用 g2 Gauge g3; // 声明 Gauge 对象引用 g3 public GaugeTest() display = Display.getDisplay(this); public void startapp() Form f = new Form("Gauge test"); g1 = new Gauge("voice",true,10,4); //g1 可以交互 g2 = new Gauge("voice+",false,10,4); //g2 不可以交互 g3 = new Gauge("voice-",false,10,6); //g3 不可以交互 f.append(g1); f.append(g2); f.append(g3); f.setitemstatelistener(this); // 监听表单 display.setcurrent(f); public void itemstatechanged(item item) if(item==g1) g2.setvalue(g1.getvalue()); // 设置 g2 的标尺值为 g1 的标尺值 g3.setvalue(10-g1.getvalue()); // 设置 g3 的标尺值 public void pauseapp() public void destroyapp(boolean unconditional) 程序运行结果如图 3-14 所示 在本例中, 由于传入 false 会造成长条状的 Gauge, 无法用按钮改变它的值, 必须在程序里利用 setvalue() 方法设定其值 ; 反之, 如果传入 true, 不但可以造成有高低起伏的 Gauge, 而且一旦该 Gauge 被选择之后, 还会出现箭头供调整其值 任何时候都可以使用 getmaxvalue() 方法或 setmaxvalue() 方法来取得或设定允许的最大值, 也可以使用 getvalue() 方法或 setvalue() 方法来设定当时的初始值 6.DataField DateField 是一种可以放到 Form 对象上的可编辑组件, 用来表示日历中的日期和时间信息 它有两种构造方法, 形式如下 : 图 3-14 Gauge 程序运行结果 DateField(String label,int mode) DateField(String label,int mode,timezone timezone) 两种构造方法都指定了标签和输入模式, 后者还指定了时区 如果 timezone 为 null,

25 则使用系统默认时区 程序示例如下 实例 3-14 DateField 的应用 import javax.microedition.lcdui.*; import javax.microedition.midlet.*; import java.util.*; public class DateFieldTest extends MIDlet private Display display; public test() display = Display.getDisplay(this); public void startapp() Form f = new Form(" 日期测试 "); Date now = new Date(); DateField df = new DateField ("DateFieldTest",DateField.DATE_TIME,TimeZone.getTimeZone("GMT +08")); // 标题, 显示类型和时区 df.setdate(now); // 显示当前时间和日期 f.append(df); display.setcurrent(f); public void pauseapp() public void destroyapp(boolean unconditional) DataField 的模式有三种, 分别为 DateField.DATE( 日期信息 ) DateField.TIME( 时间信息 ) 和 DateField.DATE_TIME( 日期和时间信息 ) 本例采用了第三种模式, 程序运行结果如图 3-15 所示 图 3-15 DateField 程序运行结果 7.ImageItem ImageItem 组件能够在 Form 中显示图片, 从而实现图文混排的效果 ImageItem 的用法与 StringItem 相似 如果要在 Form 之中加入 ImageItem, 可以使用 append() 方法, 然后 75 第 3 章高级用户界面

26 J2ME 手机游戏开发技术与实践 ( 第 2 版 ) 传入一个 ImageItem 即可 ImageItem 的构造方法形式如下 : 76 public ImageItem(String label,image img,int layout,string alttext); 构造 ImageItem 对象, 需要使用 4 个参数, 分别是标签 图像对象 布局方式和替换用的文本字符串 如果显示器不能正确地显示图像, 就在放图像的位置显示 alttext 参数指定的字符串,layout 参数决定了 ImageItem 的显示位置, 其参数是 ImageItem 类的静态常量, 如表 3-5 所示 表 3-5 layout 的参数说明 ImageItem.LAYOUT_CENTER 图像居中 ImageItem.LAYOUT_DEFAULT 图像容器的默认格式 ImageItem.LAYOUT_LEFT 图像居左 ImageItem.LAYOUT_NEWLINE_AFTER 绘制图像以后换行 ImageItem.LAYOUT_NEWLINE_BEFORE 绘制图像之前换行 ImageItem.LAYOUT_ RIGHT 图像居右 实例 3-15 DateField 的应用 import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class ImageItemTest extends MIDlet private Display display; Command commit; public ImageItemTest() display = Display.getDisplay(this); public void startapp() commit = new Command("Commit",Command.SCREEN,1); Form f = new Form("ImageItemTest"); f.append(" 显示图片 \n"); try Image image = Image.createImage("/cai01.png"); // 载入图片 ImageItem ima = new ImageItem ("pic",image,imageitem.layout_center,"error"); f.append(ima); catch(exception e) System.out.println(e.getMessage()); f.addcommand(commit); display.setcurrent(f); public void pauseapp() public void destroyapp(boolean unconditional) 程序运行结果如图 3-16 所示

27 图 3-16 ImageItem 程序运行结果 小 结 本章主要介绍了 MIDP 高级用户界面, 占用手机整个屏幕的 4 个控件分别是 :Alert List TextBox 和 Form 其中,Form 是一个特殊的控件, 它不仅是一个可显示的控件, 而且是一个可以容纳 Item 的容器 在 Item 中, 介绍了 StringItem TextField ChoiceGroup Gauge DataField 和 ImageItem 组件, 以及对应的高级事件处理机制 思考题 1. 高级用户界面的类结构是什么? 2.TextBox 组件的作用是什么? 3.List 组件的作用和类型是什么? 4. 可作为容器的组件有哪些? 77 第 3 章高级用户界面

<4D F736F F F696E74202D20B8DFBCB6D3C3BBA7BDE7C3E6D3EBB6E0CFDFB3CC2E707074>

<4D F736F F F696E74202D20B8DFBCB6D3C3BBA7BDE7C3E6D3EBB6E0CFDFB3CC2E707074> 高级用户界面与多线程 LCDUI 高级 LCDUI LCDUI 与多线程 多线程在手机编程中尤为重要 手机游戏开发中, 通常由游戏主线程负责游戏的基本控制, 除此之外还会由一个或者多个线程用于播放背景音乐或声效 网络接受数据时, 传输速度通常都比较慢, 因此可以使用一个独立的线程负责接收数据, 另外一个线程负责 UI 界面和与用户的交互 LCDUI 与多线程 J2ME 是通过线程体来实现多线程的 线程体就是用于实现线程活动的主体,

More information

MIDP 学习笔记

MIDP 学习笔记 一 高层 MIDP 事件高层 MIDP 事件分为两类 : Command 和 Item 事件 最简单地说,Command 事件是由设备上的键击触发的, 而 Item 事件则是显示中的可视化组件改变的结果 在本节中将介绍如何处理这两种事件类型 Command 对象 在移动设备中发生一个事件时, 就会有一个 Command 对象携带有关这个事件的信息 这些信息包含所执行的命令的类型 命令的标签以及其优先级

More information

J2ME.PDF

J2ME.PDF J2ME..1 J2ME 1 CLDC...3 MIDP..11 KJava MIDP for Palm OS..15 MIDP...16 MIDP.. 16 MIDlet....23 MIDlet Hello World MIDlet..26 MIDP 30 MIDP..30 MIDP..32 MIDP..43 MIDP 59....59 MIDP..64 72 MIDP 76 (Record Management

More information

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数

OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 18 日晚 9 点 关于抄袭 没有分数 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double

More information

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点

OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 4 月 19 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d

More information

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基

SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 odps-sdk 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基 开放数据处理服务 ODPS SDK SDK 概要 使用 Maven 的用户可以从 Maven 库中搜索 "odps-sdk" 获取不同版本的 Java SDK: 包名 odps-sdk-core odps-sdk-commons odps-sdk-udf odps-sdk-mapred odps-sdk-graph 描述 ODPS 基础功能的主体接口, 搜索关键词 "odpssdk-core" 一些

More information

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

res/layout 目录下的 main.xml 源码 : <?xml version=1.0 encoding=utf 8?> <TabHost android:layout_height=fill_parent xml 拓展训练 1- 界面布局 1. 界面布局的重要性做应用程序, 界面是最基本的 Andorid 的界面, 需要写在 res/layout 的 xml 里面, 一般情况下一个 xml 对应一个界面 Android 界面布局有点像写 html( 连注释代码的方式都一样 ), 要先给 Android 定框架, 然后再在框架里面放控件,Android 提供了几种框架,AbsoluteLayout,LinearLayout,

More information

Guava学习之Resources

Guava学习之Resources Resources 提供提供操作 classpath 路径下所有资源的方法 除非另有说明, 否则类中所有方法的参数都不能为 null 虽然有些方法的参数是 URL 类型的, 但是这些方法实现通常不是以 HTTP 完成的 ; 同时这些资源也非 classpath 路径下的 下面两个函数都是根据资源的名称得到其绝对路径, 从函数里面可以看出,Resources 类中的 getresource 函数都是基于

More information

PowerPoint 演示文稿

PowerPoint 演示文稿 按钮对象 (button) 当 JavaScript 读到 标记中的 type 属性值为 button 时, 自动建立一个按钮对象, 并将该对象放到表单对象的 elements 数组当中 按钮对象包括 : 普通按钮 (button) 提交按钮 (submit) 重置按钮 (reset) 1. 使用按钮对象的格式 document.forms[ 索引值 ].elements[ 索引值

More information

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课

OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3: 3 月 29 日晚 9 点 4 月 1 日上课 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 类的复用 组合 (composition): has-a 关系 class MyType { public int i; public double d; public char c; public void set(double x) { d =

More information

Copyright 2007 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, California 95054, U.S.A. 版 權 所 有 Sun Microsystems, Inc. 對 本 文 件 所 述 產 品 所 採 用

Copyright 2007 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, California 95054, U.S.A. 版 權 所 有 Sun Microsystems, Inc. 對 本 文 件 所 述 產 品 所 採 用 使 用 者 指 南 Sun Java TM Wireless Toolkit for CLDC 2.5.2 版 Sun Microsystems, Inc. www.sun.com $$$v252 2007 年 9 月 Copyright 2007 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara, California 95054,

More information

Microsoft Word - Broker.doc

Microsoft Word - Broker.doc Broker 模式 采用 broker 模式对分布式计算进行简单模拟 系统在一个进程内模拟分布式环境, 因此不涉及网络编程和进程间通信,Broker 通过本地函数调用的方式实现 request 和 response 的转发 采用 broker 模式对分布式计算进行简单的模拟, 要求如下 : 设计四个 server, 一个 server 接收两个整数, 求和并返回结果, 一个 server 接收两个整数,

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页

一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 第 1 页共 32 页 crm Mobile V1.0 for IOS 用户手册 一 登录 crm Mobile 系统 : 输入 ShijiCare 用户名和密码, 登录系统, 如图所示 : 第 2 页共 32 页 二 crm Mobile 界面介绍 : 第 3 页共 32 页 三 新建 (New) 功能使用说明 1 选择产品 第 4 页共 32 页 2 填写问题的简要描述和详细描述 第 5 页共

More information

软件工程文档编制

软件工程文档编制 实训抽象类 一 实训目标 掌握抽象类的定义 使用 掌握运行时多态 二 知识点 抽象类的语法格式如下 : public abstract class ClassName abstract void 方法名称 ( 参数 ); // 非抽象方法的实现代码 在使用抽象类时需要注意如下几点 : 1 抽象类不能被实例化, 实例化的工作应该交由它的子类来完成 2 抽象方法必须由子类来进行重写 3 只要包含一个抽象方法的抽象类,

More information

F515_CS_Book.book

F515_CS_Book.book /USB , ( ) / L R 1 > > > 2, / 3 L 1 > > > 2 + - 3, 4 L 1 了解显示屏上显示的图标 Wap 信箱收到一条 Wap push 信息 ( ) GSM 手机已连接到 GSM 网络 指示条越多, 接收质量越好 2 ...........................4.............................. 4 Micro SD (

More information

J2ME开发环境达建

J2ME开发环境达建 J2ME...2 Eclipse...2 J2ME...18 MIDP...18 J2ME Hello World...20 J2ME...22 J2ME...24 j2me...25 j2me...36 UI...36 Cancelable...38 J2ME...40...51 J2ME...51 J2ME Game...76...79 J2ME...79 J2ME...90 J2ME Eclipse

More information

Microsoft Word - ch-09.DOC

Microsoft Word - ch-09.DOC MIDlet 的事件處理 Versioning, 注意, 是把 version 這個字當動詞用, 也是軟體公司賺大錢的技倆 前言 MIDlet 程式結構 MIDlet 的生命週期 MIDlet 的基本構造實體機器上的輸入介面 MIDlet 事件處理總結 前 言 手機程式設計入門 從本章開始, 我們將要學習整個 MIDlet 的生命週期, 試著和 Application Manager 打交道, 這可以讓您各了解

More information

无类继承.key

无类继承.key 无类继承 JavaScript 面向对象的根基 周爱 民 / aimingoo aiming@gmail.com https://aimingoo.github.io https://github.com/aimingoo rand = new Person("Rand McKinnon",... https://docs.oracle.com/cd/e19957-01/816-6408-10/object.htm#1193255

More information

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-055Big5 Title : Sun Certified Programmer for the Java 2 Platform.SE 5.0 Version : Demo 1 / 22 1. 11. public static void parse(string str)

More information

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例

帝国CMS下在PHP文件中调用数据库类执行SQL语句实例 帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例 这篇文章主要介绍了帝国 CMS 下在 PHP 文件中调用数据库类执行 SQL 语句实例, 本文还详细介绍了帝国 CMS 数据库类中的一些常用方法, 需要的朋友可以参考下 例 1: 连接 MYSQL 数据库例子 (a.php)

More information

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple

// HDevelopTemplateWPF projects located under %HALCONEXAMPLES%\c# using System; using HalconDotNet; public partial class HDevelopExport public HTuple halcon 与 C# 混合编程之 Halcon 代码调用 写在前面 完成 halcon 与 C# 混合编程的环境配置后, 进行界面布局设计构思每一个按钮所需要实现 的功能, 将 Halcon 导出的代码复制至相应的 C# 模块下即可 halcon 源程序 : dev_open_window(0, 0, 512, 512, 'black', WindowHandle) read_image (Image,

More information

Struts2自定义类型转换.doc

Struts2自定义类型转换.doc Struts2 自定义类型转换 原理 struts2 的自定义类型转换机制为复杂类型的输入输出处理提供了便捷.struts2 已经为我们提供了几乎所有的 primitive 类型以及常用类型 ( 如 Date) 的类型转换器, 我们也可以为我们自定义类添加自定义类型转化器. struts2 为我们提供了一个类型转化器的入口 : ognl.defaulttypeconverter, 或继承 org.apache.struts2.util.strutstypeconverter,

More information

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

拦截器(Interceptor)的学习

拦截器(Interceptor)的学习 二 拦截器 (Interceptor) 的学习 拦截器可以监听程序的一个或所有方法 拦截器对方法调用流提供了细粒度控制 可以在无状态会话 bean 有状态会话 bean 和消息驱动 bean 上使用它们 拦截器可以是同一 bean 类中的方法或是一个外部类 下面介绍如何在 Session Bean 类中使用外部拦截器类 @Interceptors 注释指定一个或多个在外部类中定义的拦截器 下面拦截器

More information

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料

OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢   学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 2 提交时间 : 3 月 14 日晚 9 点 另一名助教 : 王桢 Email: 51141201063@ecnu.cn 学习使用文本编辑器 学习使用 cmd: Power shell 阅读参考资料 OOP with Java Java 类型 引用 不可变类型 对象存储位置 作用域 OOP

More information

epub83-1

epub83-1 C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

Microsoft Word - ch-12.DOC

Microsoft Word - ch-12.DOC 12 MIDP 資料庫程式設計 沒經過處理的資料當然叫做垃圾, 但是也不見得經過處理的資料就是資訊 前言紀錄管理系統概觀紀錄倉儲的使用資料儲存監視紀錄倉儲的變化走訪紀錄倉儲多緒執行的相關議題實際範例 : 通訊錄總結 12 前 言 手機程式設計入門 不管是開發什麼類型的程式, 資料庫永遠是一個最重要的議題 雖然在 2 Standard/Enterprise Edition 之中已經有 JDBC 這個技術,

More information

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 JAVA 程 序 设 计 ( 肆 ) 徐 东 / 数 学 系 使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 使 用 Java class 代 表 保 险 箱 public class SaveBox 类 名 类 类 体 实 现 封 装 性 使 用 class SaveBox 代 表 保

More information

X713_CS_Book.book

X713_CS_Book.book / / /USB ) ; ; C D ; ; B B 1 >> 2 3 B 1 ( > > ) 了解显示屏上显示的图标 Wap 信箱收到一条 Wap push 信息 GSM GPS ( ) 手机已连接到 GSM 网络 指示条越多, 接收质量越好 GPS 2 ...........................4.............................. 4 Micro SD (

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

More information

第四章 102 图 4唱16 基于图像渲染的理论基础 三张拍摄图像以及它们投影到球面上生成的球面图像 拼图的圆心是相同的 而拼图是由球面图像上的弧线图像组成的 因此我 们称之为同心球拼图 如图 4唱18 所示 这些拼图中半径最大的是圆 Ck 最小的是圆 C0 设圆 Ck 的半径为 r 虚拟相机水平视域为 θ 有 r R sin θ 2 4畅11 由此可见 构造同心球拼图的过程实际上就是对投影图像中的弧线图像

More information

FPGAs in Next Generation Wireless Networks WPChinese

FPGAs in Next Generation Wireless Networks WPChinese FPGA 2010 3 Lattice Semiconductor 5555 Northeast Moore Ct. Hillsboro, Oregon 97124 USA Telephone: (503) 268-8000 www.latticesemi.com 1 FPGAs in Next Generation Wireless Networks GSM GSM-EDGE 384kbps CDMA2000

More information

<C8EBC3C5C6AAA3A8B5DA31D5C2A3A92E696E6464>

<C8EBC3C5C6AAA3A8B5DA31D5C2A3A92E696E6464> 第 1 章 进入 Photoshop 的全新世界 本章导读 Photoshop 1 1.1 Photoshop CS6 Photoshop Photoshop 1.1.1 Photoshop POP 1-1 图 1-1 平面广告效果 1.1.2 Photoshop 1-2 Photoshop CS6 Photoshop CS6 Photoshop CS6 Extended 3D 3 Photoshop

More information

Microsoft Word - CX1000-HMI_程序开发_PLC通讯

Microsoft Word - CX1000-HMI_程序开发_PLC通讯 用 VB.Net 开发 CX1000 的 HMI 第二部分和 TwinCAT PLC 通讯 一 TwinCAT 动态库 TwinCAT.Ads.dll The TwinCAT.Ads.dll 是一个.NET 类库, 它提供和 ADS 设备通讯的类 如果 TwinCAT PLC 运行在 IPC 上, 则需要添加的类库是路径 \TwinCAT\ADS Api\.NET\v1.1.4322 下的 TwinCAT.Ads.dll

More information

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 -> 目录 1 大概思路... 1 2 创建 WebAPI... 1 3 创建 CrossMainController 并编写... 1 4 Nuget 安装 microsoft.aspnet.webapi.cors... 4 5 跨域设置路由... 4 6 编写 Jquery EasyUI 界面... 5 7 运行效果... 7 8 总结... 7 1 1 大概思路 创建 WebAPI 创建 CrossMainController

More information

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074> 程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 pengxin@fudan.edu.cn 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学

More information

chp6.ppt

chp6.ppt Java 软 件 设 计 基 础 6. 异 常 处 理 编 程 时 会 遇 到 如 下 三 种 错 误 : 语 法 错 误 (syntax error) 没 有 遵 循 语 言 的 规 则, 出 现 语 法 格 式 上 的 错 误, 可 被 编 译 器 发 现 并 易 于 纠 正 ; 逻 辑 错 误 (logic error) 即 我 们 常 说 的 bug, 意 指 编 写 的 代 码 在 执 行

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO CHAPTER 使用 Hadoop 打造自己的雲 8 8.3 測試 Hadoop 雲端系統 4 Nodes Hadoop Map Reduce Hadoop WordCount 4 Nodes Hadoop Map/Reduce $HADOOP_HOME /home/ hadoop/hadoop-0.20.2 wordcount echo $ mkdir wordcount $ cd wordcount

More information

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/

JAVA 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:/ 单元 2.1 四则运算机 ( 一 ) 单元教学进度设计 教学环节 教学内容 教师学生活动活动 反馈 反馈课前作业完成情况 反馈加分 1. 下面哪些是合法的变量名? ( ) A.2variable 答案 :DEG B..variable2 解答 : C.._whatavariable A:// 不能以数字开头 D._3_ B:// 不能用点和空格 提问 抢答 E.$anothervar C: // 不能用点和空格

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6 www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7

More information

PowerPoint Presentation

PowerPoint Presentation 1 版权所有 2011,Oracle 和 / 或其分支机构 保留所有权利 从幻灯片 8 中插入信息保护策略分类 WAC Widget Java ME 手机新动向陈志宇 2 版权所有 2011,Oracle 和 / 或其分支机构 保留所有权利 从幻灯片 8 中插入信息保护策略分类 以下内容旨在概述我们产品总的发展方向 该内容仅供参考, 不可纳入任何合同 该内容不构成提供任何材料 代码或功能的承诺, 并且不应该作为制定购买决策的依据

More information

Android Service

Android Service Android Service- 播放音樂 建國科技大學資管系 饒瑞佶 2013/7 V1 Android Service Service 是跟 Activity 並行 一個音樂播放程式若沒使用 Service, 即使按 home 鍵畫面離開之後, 音樂還是照播 如果再執行一次程式, 新撥放的音樂會跟先前撥放的一起撥, 最後程式就會出錯 執行中的程式完全看不到! 但是, 寫成 Service 就不同了

More information

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票

OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 3 提交时间 3 月 29 日晚 9 点 Piazza Project 2 投票 复习 创建对象 构造函数 函数重载 : 函数 = 函数名 + 参数列表 public class MyType { int i; double d; char c; void set(double x)

More information

Microsoft Word - 黃惠俞_Epets

Microsoft Word - 黃惠俞_Epets 設 計 具 互 動 式 之 手 機 電 子 寵 物 系 列 遊 戲 並 實 作 Happy E-pets 手 機 寵 物 遊 戲 黃 惠 俞 吳 玄 裕 張 躍 曦 郭 俊 甫 阮 昱 翔 國 立 虎 尾 科 技 大 學 資 訊 工 程 系 hyhuang@nfu.edu.tw, {w75346, c00069123,super18181, air3210077} @hotmail.com 摘 要

More information

可 Web 编程的NativeUI 设计与实现

可 Web 编程的NativeUI  设计与实现 可 Web 编程的 NativeUI 设计与实现 张袁炜 zhangyuanwei@baidu.com 欢迎转岗简历请发 About Me @ 张袁炜 直达号 网址导航 百度 音乐 前端 Node.js Android Arduino RaspberryPI https://github.com/zhangyuanwei Outline 一个 Hybrid App 的进化史 Native UI 实现原理

More information

模板

模板 制作人 : 张刚 目录 类和对象 面向对象程序设计基本特征 类的声明 构造方法 成员变量和方法 封装 继承 多态 包 访问控制 final static 抽象类和接口 内部类 沈阳工业大学软件学院 Java 课程教研组 Page 2 核心知识点 类 对象 三个基本特征 类的基本结构 成员变量 构造方法 成员方法 类实例 对象创建和操作 沈阳工业大学软件学院 Java 课程教研组 Page 3 1.

More information

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6: Chapter 15. Suppressed Exception CH14 Finally Block Java SE 7 try-with-resources JVM cleanup try-with-resources JVM cleanup cleanup Java SE 7 Throwable getsuppressed Throwable[] getsuppressed() Suppressed

More information

LEFT, RIGHT // 左 // 右 (2) 当图片移动后, 按钮的坐标发生改变, 此操作通过 setloca tion() 方法实现 setlocation() 方法是从 Component 类继承的, 其定义如下 : public void setlocation(int x, int y

LEFT, RIGHT // 左 // 右 (2) 当图片移动后, 按钮的坐标发生改变, 此操作通过 setloca tion() 方法实现 setlocation() 方法是从 Component 类继承的, 其定义如下 : public void setlocation(int x, int y 拼图游戏 任务说明 本实例实现了拼图游戏的开发 运行程序, 单击 开始 按钮将打乱图片的位置, 效果如图 1 所示, 然后通过鼠标单击图片进行移动, 直到将所有图片都移动到正确位置, 游戏过关, 过关后的效果如图 2 所示 图 1 打乱图片位置的效果图 2 图片移动到正确位置的效果 关键技术 本程序主要通过 Swing 与枚举类实现, 程序将一幅完整的图片平均分成 9 部分, 每一部分为一个正方形,

More information

《J2ME MIDP 1.0/2.0 无线设备编程指南》参考书附加综合实例

《J2ME MIDP 1.0/2.0 无线设备编程指南》参考书附加综合实例 J2ME MIDP v2.0 开发综合实例 作者 : 闻怡洋 2004/02/08 http://wyy.vchelp.net/ 版权说明 : 本文版权属于作者闻怡洋, 在未经过作者允许的情况下禁止以下行为 : 在互联网上转载本文 在任何盈利性杂志或是盈利性行为中使用本文 关键字 :J2ME MIDP 实例开发编程 MIDlet WTK 综合实例文章目录 第 1 章 预备知识 2 1.1 J2ME

More information

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0,

Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, http://debut.cis.nctu.edu.tw/~chi Java java.lang.math Java Java.util.Random : ArithmeticException int zero = 0; try { int i= 72 / zero ; }catch (ArithmeticException e ) { // } 0, : POSITIVE_INFINITY NEGATIVE_INFINITY

More information

JBuilder Weblogic

JBuilder Weblogic JUnit ( bliu76@yeah.net) < >6 JUnit Java Erich Gamma Kent Beck JUnit JUnit 1 JUnit 1.1 JUnit JUnit java XUnit JUnit 1.2 JUnit JUnit Erich Gamma Kent Beck Erich Gamma Kent Beck XP Extreme Programming CRC

More information

javaexample-02.pdf

javaexample-02.pdf n e w. s t a t i c s t a t i c 3 1 3 2 p u b l i c p r i v a t e p r o t e c t e d j a v a. l a n g. O b j e c t O b j e c t Rect R e c t x 1 y 1 x 2 y 2 R e c t t o S t r i n g ( ) j a v a. l a n g. O

More information

untitled

untitled 3 C++ 3.1 3.2 3.3 3.4 new delete 3.5 this 3.6 3.7 3.1 3.1 class struct union struct union C class C++ C++ 3.1 3.1 #include struct STRING { typedef char *CHARPTR; // CHARPTR s; // int strlen(

More information

22) 使话机检测 Auto provision 更新 : ) 开启 DND: ) 关闭 DND: ) 使用数字键 0 : ) 使用数字键 1 : ) 使用数字键 2 : ) 使用数字键 3 : ) 使

22) 使话机检测 Auto provision 更新 : ) 开启 DND: ) 关闭 DND: ) 使用数字键 0 : ) 使用数字键 1 : ) 使用数字键 2 : ) 使用数字键 3 : ) 使 目录 Action URI 使用说明... 1 1. Action URI... 1 2. 话机配置... 1 3. Action URI 的使用... 2 4.Yealink 话机通过 Action URI 可实现的功能 :... 3 1) 接听来电 :... 3 2) 使用免提键 :... 3 3) 使用转接键 TRAN:... 3 4) 增加音量 :... 3 5) 减小音量 :... 3 6)

More information

mainform.append("\n"+text); // 为 mainform 添加 Command, 用于与用户交互 mainform.addcommand(exitcommand); mainform.setcommandlistener(this); // 将 mainform 设置为手机

mainform.append(\n+text); // 为 mainform 添加 Command, 用于与用户交互 mainform.addcommand(exitcommand); mainform.setcommandlistener(this); // 将 mainform 设置为手机 做好上述准备工作后, 开始使用代码编辑器编写 MIDlet 切换到项目视图, 新建一个 MIDlet 命名为 TurboMidlet, 设置 MIDlet 的图标为 /icon/icon.png TurboMidlet 的代码如下所示 package com.j2medev.netbeans; import java.io.bytearrayoutputstream; import java.io.ioexception;

More information

Mac Java import com.apple.mrj.*;... public class MyFirstApp extends JFrame implements ActionListener, MRJAboutHandler, MRJQuitHandler {... public MyFirstApp() {... MRJApplicationUtils.registerAboutHandler(this);

More information

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas

目录 1 IPv6 快速转发 IPv6 快速转发配置命令 display ipv6 fast-forwarding aging-time display ipv6 fast-forwarding cache ipv6 fas 目录 1 IPv6 快速转发 1-1 1.1 IPv6 快速转发配置命令 1-1 1.1.1 display ipv6 fast-forwarding aging-time 1-1 1.1.2 display ipv6 fast-forwarding cache 1-1 1.1.3 ipv6 fast-forwarding aging-time 1-3 1.1.4 ipv6 fast-forwarding

More information

第 05 期 董房等 : 一种卫星遥测在线状态监测及分析系统的设计 WEB 1 2 总体功能及组成 2.1 总体功能 1 2 3Web 2.2 结构组成 Web WEB WEB 2.3 系统各模块接口关系

第 05 期 董房等 : 一种卫星遥测在线状态监测及分析系统的设计 WEB 1 2 总体功能及组成 2.1 总体功能 1 2 3Web 2.2 结构组成 Web WEB WEB 2.3 系统各模块接口关系 电子科学技术 Electronic Science & Technology 电子科学技术第 02 卷第 05 期 2015 年 9 月 Electronic Science & Technology Vol.02 No.05 Sep.2015 年 一种卫星遥测在线状态监测及分析系统的设计 董房 1,2, 刘洋 2, 王储 2 2, 刘赞 (1. 上海交通大学, 上海,200240; 2. 上海卫星工程研究所,

More information

chap07.key

chap07.key #include void two(); void three(); int main() printf("i'm in main.\n"); two(); return 0; void two() printf("i'm in two.\n"); three(); void three() printf("i'm in three.\n"); void, int 标识符逗号分隔,

More information

付宝容器 jsapi 档 册 PDF 版本 本版本为实验版本, 为线下独 查看使, 受制于 成 PDF 程序的限制, 样式问题还没有很好的解决, 例如分 切图 代码 亮 推荐使 在线版本, 便实时查看 jsapi 运 效果 如需搜索, 使 阅读 PDF 软件 带功能即可 更多细节样式调整和 录索引探

付宝容器 jsapi 档 册 PDF 版本 本版本为实验版本, 为线下独 查看使, 受制于 成 PDF 程序的限制, 样式问题还没有很好的解决, 例如分 切图 代码 亮 推荐使 在线版本, 便实时查看 jsapi 运 效果 如需搜索, 使 阅读 PDF 软件 带功能即可 更多细节样式调整和 录索引探 付宝容器 jsapi 档 册 PDF 版本 本版本为实验版本, 为线下独 查看使, 受制于 成 PDF 程序的限制, 样式问题还没有很好的解决, 例如分 切图 代码 亮 推荐使 在线版本, 便实时查看 jsapi 运 效果 如需搜索, 使 阅读 PDF 软件 带功能即可 更多细节样式调整和 录索引探索建设中 成时间 : 2017-07-20 12:13:21 Since 8.6 定义键盘 定义键盘使

More information

云数据库 RDS SDK

云数据库 RDS SDK 云数据库 RDS SDK SDK SDK 下载 SDK 下载 最新版本 java_sdk.zip python_sdk.zip php_sdk.zip c#_sdk.zip 历史版本 2015-11-3 java_sdk.zip python_sdk.zip php_sdk.zip c#_sdk.zip JAVA 教程 JAVA 创建 Access Key 登陆阿里云账号 打开 我的 Access

More information

untitled

untitled 1 .NET 利 [] [] 來 說 切 切 理 [] [ ] 來 說 拉 類 類 [] [ ] 列 連 Web 行流 來 了 不 不 不 流 立 行 Page 類 Load 理 Response 類 Write 料 Redirect URL Response.Write("!! ives!!"); Response.Redirect("WebForm2.aspx"); (1) (2) Web Form

More information

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

More information

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点

OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 OOP with Java Yuanbin Wu cs@ecnu OOP with Java 通知 Project 4: 5 月 2 日晚 9 点 复习 Java 包 创建包 : package 语句, 包结构与目录结构一致 使用包 : import restaurant/ - people/ - Cook.class - Waiter.class - tools/ - Fork.class - Table.class

More information

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj

Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream Class java.io.datainptstream (extends) FilterInputStream InputStream Obj Message Transition 5-1 5-2 DataInputStream Class 5-3 DataOutputStream Class 5-4 PrintStream Class 5-5 (Message Transition) (Exercises) Java Access 5-1 Server Client Client Server Server Client 5-2 DataInputStream

More information

手说TTS开发指南

手说TTS开发指南 手说 TTS 开发指南 v1.3 2011 年 6 月 版权所有 : 手说工作室 shoushuo.com 版本时间作者说明 1.0 2010-11-15 张波 1.1 2010-12-27 在 ondestroy 方法 unbindservice 1.2 2010-12-30 1.3 2011-6-12 去掉 TTS 初始化 ; ttsservice.initialize() 方法调用添加接口方法

More information

JavaIO.PDF

JavaIO.PDF O u t p u t S t ream j a v a. i o. O u t p u t S t r e a m w r i t e () f l u s h () c l o s e () public abstract void write(int b) throws IOException public void write(byte[] data) throws IOException

More information

吉林大学学报 工学版 244 第 4 卷 复杂 鉴于本文篇幅所限 具体公式可详见参考文 献 7 每帧的动力学方程建立及其解算方法如图 3 所示 图4 滚转角速度与输入量 η 随时间的变化波形 Fig 4 Waveform of roll rate and input η with time changing 图5 Fig 5 滚转角随时间的变化波形 Waveform of roll angle with

More information

建模与图形思考

建模与图形思考 F06_c 观摩 :ContentProvider 基於軟硬整合觀點 架构與 DB 引擎移植方法 ( c) By 高煥堂 4 通用性基类 ContentProvider 基於軟硬整合觀點 的使用范例 刚才的范例里, 我们直接使用 DataPersist 类的接口来与 SQLite 沟通 本节将替 DataPersist 配上 ContentProvider 基类, 让 Client 能透过 ContentProvider

More information

ChinaBI企业会员服务- BI企业

ChinaBI企业会员服务- BI企业 商业智能 (BI) 开源工具 Pentaho BisDemo 介绍及操作说明 联系人 : 杜号权苏州百咨信息技术有限公司电话 : 0512-62861389 手机 :18616571230 QQ:37971343 E-mail:du.haoquan@bizintelsolutions.com 权限控制管理 : 权限控制管理包括 : 浏览权限和数据权限 ( 权限部分两个角色 :ceo,usa; 两个用户

More information

Microsoft PowerPoint - string_kruse [兼容模式]

Microsoft PowerPoint - string_kruse [兼容模式] Strings Strings in C not encapsulated Every C-string has type char *. Hence, a C-string references an address in memory, the first of a contiguous set of bytes that store the characters making up the string.

More information

技 术 文 件

技  术  文  件 技术文件 技术文件名称 :IAlert 接口使用说明 技术文件编号 : 版 本 :V1.0 共页 ( 包括封面 ) 拟制 审核 会签 标准化 批准 中兴通讯股份有限公司 XX 软件模块详细设计说明 版本号 修改记录 文件编号 版本号 拟制人 / 修改人 拟制 / 修改日期 1 V1.0 胡曦 2005-08-12 新建 更改理由 主要更改内容 ( 写要点即可 ) 注 1: 每次更改归档文件 ( 指归档到事业部或公司档案室的文件

More information

工程项目进度管理 西北工业大学管理学院 黄柯鑫博士 甘特图 A B C D E F G 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 甘特图的优点 : 直观明了 ( 图形化概要 ); 简单易懂 ( 易于理解 ); 应用广泛 ( 技术通用 ) 甘特图的缺点 : 不能清晰表示活动间的逻辑关系 WBS 责任分配矩阵 ( 负责〇审批

More information

使用Cassandra和Spark 2.0实现Rest API服务

使用Cassandra和Spark 2.0实现Rest API服务 使用 Cassandra 和 Spark 2.0 实现 Rest API 服务 在这篇文章中, 我将介绍如何在 Spark 中使用 Akkahttp 并结合 Cassandra 实现 REST 服务, 在这个系统中 Cassandra 用于数据的存储 我们已经见识到 Spark 的威力, 如果和 Cassandra 正确地结合可以实现更强大的系统 我们先创建一个 build.sbt 文件, 内容如下

More information

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式]

Microsoft PowerPoint - 4. 数组和字符串Arrays and Strings.ppt [兼容模式] Arrays and Strings 存储同类型的多个元素 Store multi elements of the same type 数组 (array) 存储固定数目的同类型元素 如整型数组存储的是一组整数, 字符数组存储的是一组字符 数组的大小称为数组的尺度 (dimension). 定义格式 : type arrayname[dimension]; 如声明 4 个元素的整型数组 :intarr[4];

More information

ASP.NET实现下拉框二级联动组件

ASP.NET实现下拉框二级联动组件 ASP.NET 实现下拉框二级联动组件 namespace WebApplicationDlh using System.Drawing; using System.Web; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using Db; / / Area 的摘要说明 /

More information

untitled

untitled 4.1AOP AOP Aspect-oriented programming AOP 來說 AOP 令 理 Cross-cutting concerns Aspect Weave 理 Spring AOP 來 AOP 念 4.1.1 理 AOP AOP 見 例 來 例 錄 Logging 錄 便 來 例 行 留 錄 import java.util.logging.*; public class HelloSpeaker

More information

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

在Spring中使用Kafka:Producer篇

在Spring中使用Kafka:Producer篇 在某些情况下, 我们可能会在 Spring 中将一些 WEB 上的信息发送到 Kafka 中, 这时候我们就需要在 Spring 中编写 Producer 相关的代码了 ; 不过高兴的是,Spring 本身提供了操作 Kafka 的相关类库, 我们可以直接通过 xml 文件配置然后直接在后端的代码中使用 Kafka, 非常地方便 本文将介绍如果在 Spring 中将消息发送到 Kafka 在这之前,

More information

《C语言程序设计》教材习题参考答案

《C语言程序设计》教材习题参考答案 教材名称 : C 语言程序设计 ( 第 1 版 ) 黄保和 江弋编著清华大学出版社 ISBN:978-7-302-13599-9, 红色封面 答案制作时间 :2011 年 2 月 -5 月 一 选择题 1. 设已定义 int a, * p, 下列赋值表达式中正确的是 :C)p=&a 2. 设已定义 int x,*p=&x;, 则下列表达式中错误的是 :B)&*x 3. 若已定义 int a=1,*b=&a;,

More information

untitled

untitled 1 .NET 料.NET 料 料來 類.NET Data Provider SQL.NET Data Provider System.Data.SqlClient 料 MS-SQL OLE DB.NET Data Provider System.Data.OleDb 料 Dbase FoxPro Excel Access Oracle Access ODBC.NET Data Provider 料

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

三种方法实现Hadoop(MapReduce)全局排序(1)

三种方法实现Hadoop(MapReduce)全局排序(1) 三种方法实现 Hadoop(MapReduce) 全局排序 () 三种方法实现 Hadoop(MapReduce) 全局排序 () 我们可能会有些需求要求 MapReduce 的输出全局有序, 这里说的有序是指 Key 全局有序 但是我们知道,MapReduce 默认只是保证同一个分区内的 Key 是有序的, 但是不保证全局有序 基于此, 本文提供三种方法来对 MapReduce 的输出进行全局排序

More information

目 录(目录名)

目  录(目录名) 目录 目录...1-1 1.1 域名解析配置命令... 1-1 1.1.1 display dns domain... 1-1 1.1.2 display dns dynamic-host... 1-1 1.1.3 display dns server... 1-2 1.1.4 display ip host... 1-3 1.1.5 dns domain... 1-4 1.1.6 dns resolve...

More information

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class 踩地雷遊戲 高慧君南港高中 開啟專案 MineSweep 任務一 : 產生 30X20 個磚塊編輯 Table 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.util.arraylist; Write a description of class MyWorld

More information

Microsoft Word - 新1-12.doc

Microsoft Word - 新1-12.doc 实训 5 面向对象编程练习 实训 5 面向对象编程练习 5.1 实训目的 通过编程和上机实验理解 Java 语言是如何体现面向对象编程基本思想 以及如何创建类 和对象 了解成员变量和成员方法的特性 5.2 实训要求 编写一个体现面向对象思想的程序 编写一个创建对象和使用对象的方法的程序 5.3 实训内容 5.3.1 创建对象并使用对象 1 定义一个 Person 类 可以在应用程序中使用该类 成员属性

More information

提问袁小兵:

提问袁小兵: C++ 面 试 试 题 汇 总 柯 贤 富 管 理 软 件 需 求 分 析 篇 1. STL 类 模 板 标 准 库 中 容 器 和 算 法 这 部 分 一 般 称 为 标 准 模 板 库 2. 为 什 么 定 义 虚 的 析 构 函 数? 避 免 内 存 问 题, 当 你 可 能 通 过 基 类 指 针 删 除 派 生 类 对 象 时 必 须 保 证 基 类 析 构 函 数 为 虚 函 数 3.

More information

使用MapReduce读取XML文件

使用MapReduce读取XML文件 使用 MapReduce 读取 XML 文件 XML( 可扩展标记语言, 英语 :extensible Markup Language, 简称 : XML) 是一种标记语言, 也是行业标准数据交换交换格式, 它很适合在系统之间进行数据存储和交换 ( 话说 Hadoop H ive 等的配置文件就是 XML 格式的 ) 本文将介绍如何使用 MapReduce 来读取 XML 文件 但是 Had oop

More information

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc

Microsoft Word - Hibernate与Struts2和Spring组合指导.doc 1.1 组合 Hibernate 与 Spring 1. 在 Eclipse 中, 新建一个 Web project 2. 给该项目增加 Hibernate 开发能力, 增加 Hibernate 相关类库到当前项目的 Build Path, 同时也提供了 hibernate.cfg.xml 这个配置文件 3. 给该项目增加 Spring 开发能力, 增加 spring 相关类库到当前项目的 Build

More information

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc

本章学习目标 小风 Java 实战系列教程 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 本章学习目标 SpringMVC 简介 SpringMVC 的入门案例 SpringMVC 流程分析 配置注解映射器和适配器 配置视图解析器 @RequestMapping 注解的使用 使用不同方式的跳转页面 1. SpringMVC 简介 Spring web mvc 和 Struts2 都属于表现层的框架, 它是 Spring 框架的一部分, 我们可 以从 Spring 的整体结构中看得出来 :

More information