﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-kenlistian-随笔分类-Java</title><link>http://www.cnitblog.com/kenlistian/category/7044.html</link><description>勤学多思
</description><language>zh-cn</language><lastBuildDate>Sat, 01 Oct 2011 18:02:27 GMT</lastBuildDate><pubDate>Sat, 01 Oct 2011 18:02:27 GMT</pubDate><ttl>60</ttl><item><title>网站点播业务流程</title><link>http://www.cnitblog.com/kenlistian/archive/2008/06/27/46010.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Fri, 27 Jun 2008 04:27:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/06/27/46010.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/46010.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/06/27/46010.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/46010.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/46010.html</trackback:ping><description><![CDATA[<img  src="http://www.cnitblog.com/images/cnitblog_com/kenlistian/123.JPG" border="0"><br><img src ="http://www.cnitblog.com/kenlistian/aggbug/46010.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-06-27 12:27 <a href="http://www.cnitblog.com/kenlistian/archive/2008/06/27/46010.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>j2me笔记7</title><link>http://www.cnitblog.com/kenlistian/archive/2008/06/24/45972.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Tue, 24 Jun 2008 14:27:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/06/24/45972.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/45972.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/06/24/45972.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/45972.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/45972.html</trackback:ping><description><![CDATA[把关于序列化的章节整理了下，大致了解了使用RMS类的方法。<br>
至于如何在代码中实现，今个儿没时间搞。先放放。<br>
<br>
<br>
MIDP2.0 规范里提供了RMS<br>
以一种简单的，类似表格的形式组织信息，并存储起来形成持久化存储。<br>
<br>
理解Records(记录)和 Records Stores(记录仓储)两个概念。 <br>
<br>
记录仓储(Records Stores)类似于数据库的表 table。<br>
名称大小不能超过 32 个Unicode 字符，同一个Suite下的MIDlet 都可以共享这些记录仓储。 <br>
<br>
记录即表中记录。<br>
记录(Record)由一整型的 RecordID 与一代表数据的 byte[]数组两个子元素组成。<br>
RecordID 是记录的唯一标志符，就相当是数据表中递增的id关键字。<br>
<br>
调用javax.microedition.rms即操作数据存储。<br>
该包中有一主类， 四个接口，以及五个可能的被抛出异常。<br>
<br>
<br>
打开<br>
<br>
通过openRecordStore()来取得实例。<br>
<br>
openRecordStore (String recordStoreName, boolean createIfNecessary) <br>
openRecordStore (String recordStoreName, boolean createIfNecessary,int authmode), boolean writable)) <br>
openRecordStore (String recordStoreName, String vendorName, String suiteName) <br>
<br>
第一个参数是记录仓储的名称，<br>
第二个参数表明了当我们请求的仓储不存在时，是否新建一 Record Store;<br>
第三个参数表明了此仓储的读取权限，<br>
第四个参数则决定了写入权限。 <br>
<br>
当用第一个方法时， 则选择读取权限只限于本地，且拒绝其他MIDlet写数据到记录仓储上。<br>
即相当于使用第二种开启方法并分别为第三第四个参数传入了RecordStore.AUTHMODE_PRIVATE 和 false。 <br>
<br>
第三openRecordStore 读取其他 MIDlet Suite 记录仓储。<br>
传入参数为记录仓储名，发布商名以及 MIDlet Suite 套件名。<br>
<br>
<br>
注意，如该储的读取权限为 AUTHMODE_PRIVATE 的话，此方法将返回安全错误。 <br>
<br>
用第一种方法的示例： <br>
&nbsp; &nbsp;private RecordStore rs = null; <br>
&nbsp; &nbsp;try { <br>
&nbsp; &nbsp;&nbsp;&nbsp;//打开一个RMS，如果打开失败，则创建<br>
&nbsp; &nbsp;&nbsp; &nbsp;rs = RecordStore.openRecordStore(&#8220;testRMS&#8221;, true); <br>
&nbsp; &nbsp; }<br>
&nbsp; &nbsp; catch (RecordStoreNotFoundException e) { <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;e.printStackTrace();<br>
<br>
&nbsp; &nbsp; }<br>
&nbsp; &nbsp; catch (RecordStoreFullException e) { <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;e.printStackTrace(); <br>
&nbsp; &nbsp; } <br>
&nbsp; &nbsp; catch (RecordStoreException e) { <br>
&nbsp; &nbsp;&nbsp; &nbsp; e.printStackTrace(); <br>
&nbsp; &nbsp;} <br>
<br>
<br>
关闭 closeRecordStore()<br>
<br>
打开需要关闭，就如同你new一个内存，要记得delete，不要指望自动回收功能。<br>
<br>
try { <br>
&nbsp; &nbsp; rs = RecordStore.openRecordStore(&#8220;testRMS&#8221;, true); <br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp; //.....<br>
&nbsp; &nbsp;&nbsp; &nbsp; rs.closeRecordStore(); <br>
&nbsp; &nbsp; }<br>
&nbsp; &nbsp;&nbsp; &nbsp;catch (RecordStoreNotOpenException e) { <br>
&nbsp; &nbsp;&nbsp; &nbsp;e.printStackTrace(); <br>
&nbsp; &nbsp; } catch (RecordStoreException e) { <br>
&nbsp; &nbsp;&nbsp; &nbsp;e.printStackTrace(); <br>
&nbsp; &nbsp;} <br>
<br>
<br>
删除deleteRecordStore()<br>
<br>
在删除之前，确保当前的仓储是处于关闭状态，否则抛异常。<br>
如下<br>
<br>
//假定rs是已经存在的记录仓储，并已经打开 <br>
try <br>
{ <br>
&nbsp; &nbsp;rs.closeRecordStore(); <br>
&nbsp; &nbsp;RecordStore.deleteRecordStore(&#8220;testRMS&#8221;); <br>
&nbsp; &nbsp; <br>
} <br>
catch (RecordStoreNotOpenException e) { <br>
&nbsp; &nbsp;e.printStackTrace(); <br>
&nbsp; &nbsp; } <br>
catch (RecordStoreNotFoundException e) {<br>
&nbsp; &nbsp; e.printStackTrace(); <br>
} catch (RecordStoreFullException e) { <br>
&nbsp; &nbsp; e.printStackTrace(); <br>
} catch (RecordStoreException e) { <br>
&nbsp; &nbsp;&nbsp;&nbsp;e.printStackTrace(); <br>
} <br>
<br>
<br>
插入 addRecord(byte[] data, int offset, int numBytes)<br>
<br>
添加byte数组类型的数据。<br>
参数为byte[]数组，传入 byte[]数组起始位置，传入数据的长度<br>
<br>
数据添加成功后， addRecord 将返回记录 ID号 （RecordID） ，<br>
<br>
添加操作是一个原子操作。但在又读又写是同步的。<br>
<br>
<br>
删除 deleteRecord(int recordId)， <br>
<br>
如试图从未开启的记录仓储中删除记录，返回RecordStoreNotOpenException异常；<br>
如果传入ID无效的，返回 InvalidRecordIDException异常；<br>
<br>
修改指定ID的记录值<br>
&nbsp; &nbsp; setRecord(int recordId, byte[] newData, int offset, int numBytes)<br>
<br>
<br>
<br>
<br>
针对 RecordStore 的操作只提供对针对 byte 数组的服务.<br>
遇到的都将是非 byte 类型。<br>
<br>
采用流文件类来处理。<br>
<br>
非byte--&gt;byte<br>
ByteArrayOutputStream，&nbsp; &nbsp; <br>
DataOutputStream，<br>
<br>
byte--&gt;非byte<br>
ByteArrayInputStream，<br>
DataInputStream <br>
<br>
<br>
示例 <br>
<br>
首先写入一组自定义数据，然后在读出： <br>
&nbsp;&nbsp;ByteArrayOutputStream baos = new ByteArrayOutputStream();&nbsp; &nbsp;//构建一个转换成byte字节的流<br>
&nbsp;&nbsp;DataOutputStream dos = new DataOutputStream(baos);&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//构建写入流的数据类<br>
<br>
&nbsp;&nbsp;dos.writeBoolean(false); <br>
&nbsp;&nbsp;dos.writeInt(15); <br>
&nbsp;&nbsp;dos.writeUTF("abcde"); <br>
<br>
&nbsp;&nbsp;byte [] data = baos.toByteArray();//取得byte数组 <br>
&nbsp;&nbsp;dos.close(); <br>
&nbsp;&nbsp;baos.close(); <br>
<br>
&nbsp;&nbsp;<br>
&nbsp;&nbsp;ByteArrayInputStream bais = new ByteArrayInputStream(data); //构建一字节写入流<br>
&nbsp;&nbsp;DataInputStream dis = new DataInputStream(bais);&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;//能读流数据类<br>
&nbsp;&nbsp;<br>
&nbsp;&nbsp;boolean flag = dis.readBoolean(); <br>
&nbsp;&nbsp;int intValue = dis.readInt(); <br>
&nbsp;&nbsp;String strValue = dis.readUTF(); <br>
&nbsp;&nbsp;dis.close(); <br>
&nbsp;&nbsp;bais.close(); <br>
&nbsp; &nbsp; <br>
<br>
用RMS实现对象序列化 <br>
下面展示单词记录本，构建一个word类数据结构<br>
<br>
public class Word { <br>
&nbsp;&nbsp;private String&nbsp;&nbsp;enWord;&nbsp; &nbsp;//英文单词<br>
&nbsp;&nbsp;private String&nbsp;&nbsp;cnWord;&nbsp; &nbsp;//解释 <br>
&nbsp;&nbsp;private long&nbsp; &nbsp;dateTime;&nbsp; &nbsp;//读取时间<br>
&nbsp;&nbsp;private String&nbsp;&nbsp;detail;&nbsp; &nbsp; //备注信息<br>
} <br>
<br>
读出和写入调用serialize,deserialize<br>
serialize 用于序列化对象数据，返回 byte 数组类型；<br>
deserialize 完成的则是相反的工作。<br>
<br>
/*<br>
&nbsp;&nbsp;生成序列化的byte数组数据 <br>
*/ <br>
&nbsp;&nbsp;public byte[] serialize() throws IOException{ <br>
&nbsp; &nbsp; <br>
&nbsp; &nbsp; ByteArrayOutputStream baos = new ByteArrayOutputStream(); <br>
&nbsp; &nbsp; DataOutputStream dos = new DataOutputStream(baos); <br>
&nbsp; &nbsp; <br>
&nbsp; &nbsp; dos.writeUTF(this.enWord); <br>
&nbsp; &nbsp; dos.writeUTF(this.cnWord); <br>
&nbsp; &nbsp; dos.writeLong(this.dateTime); <br>
&nbsp; &nbsp; dos.writeUTF(this.detail); <br>
&nbsp; &nbsp; <br>
&nbsp; &nbsp; baos.close(); <br>
&nbsp; &nbsp; dos.close(); <br>
&nbsp; &nbsp; return baos.toByteArray(); <br>
} <br>
<br>
/* 将传入的byte类型数据反序列化为已知数据结构 <br>
*/ <br>
&nbsp;&nbsp;public static Word deserialize(byte[] data) throws IOException{ <br>
&nbsp; &nbsp; <br>
&nbsp; &nbsp; ByteArrayInputStream bais = new ByteArrayInputStream(data); <br>
&nbsp; &nbsp; DataInputStream dis = new DataInputStream(bais); <br>
&nbsp; &nbsp; <br>
&nbsp; &nbsp; Word word = new Word(); <br>
&nbsp; &nbsp; word.enWord = dis.readUTF(); <br>
&nbsp; &nbsp; word.cnWord = dis.readUTF(); <br>
&nbsp; &nbsp; word.dateTime = dis.readLong(); <br>
&nbsp; &nbsp; word.detail = dis.readUTF(); <br>
&nbsp; &nbsp; <br>
&nbsp; &nbsp;bais.close(); <br>
&nbsp; &nbsp;dis.close(); <br>
&nbsp; &nbsp;return word; <br>
<br>
&nbsp;&nbsp;}<br>
<br>
<br>
RecordStore的更多操作 <br>
<br>
看<br>
RecordComparator，<br>
RecordEnumeration，<br>
RecordFilter<br>
RecordListener。 <br>
<br>
考虑到 RecordComparator、RecordFilter 都是作用在 RecordEnumeration 上的，我们先来介<br>
绍这个接口。 <br>
<br>
RecordEnumeration遍历接口 <br>
采用for方式，由于RecordId所对应的记录并不见得存在，故采用RecordEnumeration 接口。 <br>
有点类似迭加器了。<br>
<br>
<br>
enumerateRecords()： <br>
通过对 RecordStore 实例对象调用 enumerateRecords 方法来取得一个 RecordEnumeration 的<br>
实例。 <br>
其可传入 3 个参数：filter，comparator与 keepUpdated。<br>
<br>
前两个参数分别是过滤器和排序策略，<br>
这个后面会讲到。<br>
<br>
当传入的 filter不为空时，它将用于决定记录仓储中的哪些记录将被使用；<br>
当 comparator 不为空时，RecordStore将按照我们指定的排列顺序返回。<br>
第三个参数决定了当遍历器建立起来以后，是否对记录仓储新的改变做出回应。<br>
如果传入 true，那么将有一个 RecordListener 被加入到 RecordStore 中，使得记录仓储的内容与<br>
RecordEnumeration 随时保持同步。<br>
如果传入 false，则可以使得当前遍历更有效率，但所取得的RecordID 集合仅仅是调用此方法这个时刻的RecordStore 快照。<br>
<br>
此后对 RecordStore 所有更改都不会反应在这个集合上。<br>
请读者根据要求在访问数据完整性和访问速度之间进行取舍。 <br>
<br>
numRecords()：&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 返回了在当前遍历集合中，可用记录数目。这里所指的可用，不仅仅是说RecordID <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;对应的记录存在；当 filter存在时，也需要符合过滤条件。 <br>
<br>
hasNextElement()：&nbsp; &nbsp;&nbsp; &nbsp;判断在 RecordEnumeration 当前指向的下一个位置， 还有没有剩余记录了。 <br>
<br>
hasPreviousElement()：&nbsp;&nbsp;判断在 RecordEnumeration当前指向的前一个位置，还有没有剩余记录了。 <br>
<br>
<br>
nextRecord()：&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; 返回了遍历器下一位置的记录拷贝，由于返回的是拷贝，<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;所以任何对返回记录的修改都不会影响到记录仓储的实际内容。 <br>
<br>
nextRecordId()：&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;返回当前遍历器下一位置记录的RecordID，当下一位置没有可用的记录时，<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;继续调用nextRecordId将抛出异常 InvalidRecordIDException。 <br>
<br>
添加一个方法 ViewAll()， 用来返回当前记录仓储中的所有单词<br>
如何利用 RecordEnumeration 来遍历记录。<br>
<br>
public Word[] viewAll() throws IOException { <br>
&nbsp; &nbsp; Word[] words = new Word[0]; <br>
&nbsp; &nbsp; RecordEnumeration re = null; <br>
<br>
&nbsp; &nbsp; //rs是之前创建的RecordStore类型实例变量 <br>
&nbsp; &nbsp; if (rs == null) <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return words; <br>
<br>
&nbsp; &nbsp; try { <br>
&nbsp; &nbsp;&nbsp; &nbsp; re = rs.enumerateRecords(null, new WordComparator(), false);<br>
&nbsp; &nbsp;&nbsp; &nbsp; //无过滤器、但有一个排序策略 <br>
&nbsp; &nbsp;&nbsp; &nbsp;words = new Word[re.numRecords()]; <br>
&nbsp; &nbsp;&nbsp; &nbsp;int wordRecords = 0; <br>
&nbsp; &nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;while (re.hasNextElement()) { <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;byte[] tmp = re.nextRecord(); <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;words[wordRecords] = Word.deserialize(tmp); <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;wordRecords++; <br>
&nbsp; &nbsp;&nbsp; &nbsp;} <br>
&nbsp; &nbsp; }<br>
&nbsp; &nbsp; catch (RecordStoreNotOpenException e1) { <br>
&nbsp; &nbsp;&nbsp; &nbsp; e1.printStackTrace(); <br>
&nbsp; &nbsp; }<br>
&nbsp; &nbsp; catch (InvalidRecordIDException e1) { <br>
&nbsp; &nbsp;&nbsp; &nbsp; e1.printStackTrace(); <br>
&nbsp; &nbsp; }<br>
&nbsp; &nbsp; catch (RecordStoreException e1) { <br>
&nbsp; &nbsp;&nbsp; &nbsp; e1.printStackTrace(); <br>
&nbsp; &nbsp; }<br>
&nbsp; &nbsp; finally { <br>
&nbsp; &nbsp;&nbsp; &nbsp;if (re != null) <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;re.destroy(); <br>
&nbsp; &nbsp;} <br>
&nbsp; &nbsp;return words; <br>
} <br>
<br>
RecordFilter 过滤接口 <br>
&nbsp;&nbsp;过滤接口是用来过滤不满足条件的记录的。<br>
&nbsp;&nbsp;要实现match(byte[] candidate)方法，当传入 byte 数据符合筛选条件时，返回 true。 <br>
<br>
&nbsp;&nbsp;WordFilter 实现 RecordFilter 接口。 <br>
<br>
&nbsp;&nbsp;public class WordFilter implements RecordFilter<br>
&nbsp;&nbsp;{ <br>
&nbsp; &nbsp; private String&nbsp;&nbsp;enWord; <br>
&nbsp; &nbsp; private int&nbsp; &nbsp;&nbsp;&nbsp;type; <br>
&nbsp; &nbsp; public WordFilter(String enword, int type){ <br>
&nbsp;&nbsp;<br>
&nbsp; &nbsp; //传入要比较的项，type指向一个自定义的内部事件标记 <br>
&nbsp; &nbsp; //表现为整形 <br>
&nbsp; &nbsp;&nbsp; &nbsp;this.enWord = enword; <br>
&nbsp; &nbsp;&nbsp; &nbsp;this.type&nbsp; &nbsp;= type; <br>
&nbsp; &nbsp;} <br>
&nbsp; &nbsp; <br>
&nbsp; &nbsp;public boolean matches(byte[] word) { <br>
&nbsp; &nbsp;//matches方法中传入的参数是RMS中的各个候选值（元素） <br>
&nbsp; &nbsp;try { <br>
&nbsp; &nbsp; <br>
&nbsp; &nbsp;&nbsp; &nbsp; if(type == EventID.SEARCH_EQUAL){ <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;return Word.matchEN(word, enWord); <br>
&nbsp; &nbsp;&nbsp; &nbsp; }<br>
&nbsp; &nbsp;&nbsp; &nbsp; else{ <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;return Word.matchEN_StartWith(word, enWord); <br>
&nbsp; &nbsp;&nbsp; &nbsp; } <br>
&nbsp; &nbsp; } <br>
&nbsp; &nbsp; catch (IOException e) { <br>
&nbsp; &nbsp;&nbsp; &nbsp; e.printStackTrace(); <br>
&nbsp; &nbsp;&nbsp; &nbsp; return false; <br>
&nbsp; &nbsp; } <br>
&nbsp; &nbsp;} <br>
} <br>
<br>
示例中的 EventID.SEARCH_EQUAL 为一个定义好的整型数据；<br>
同时，这里涉及到了Word 类的两个对应方法： <br>
<br>
public static boolean matchEN_StartWith(byte[] data, String enword) throws IOException<br>
{ <br>
&nbsp; &nbsp; ByteArrayInputStream bais = new ByteArrayInputStream(data); <br>
&nbsp; &nbsp; DataInputStream dis = new DataInputStream(bais); <br>
&nbsp; &nbsp; try{ <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;return (dis.readUTF().startsWith(enword)); <br>
<br>
&nbsp; &nbsp;&nbsp;&nbsp;}catch(IOException e){ <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;e.printStackTrace(); <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return false; <br>
&nbsp; &nbsp;&nbsp;&nbsp;} <br>
} <br>
&nbsp;&nbsp;<br>
public static boolean matchCN(byte[] data, String cnword) throws IOException<br>
{ <br>
&nbsp; &nbsp; ByteArrayInputStream bais = new ByteArrayInputStream(data); <br>
&nbsp; &nbsp; DataInputStream dis = new DataInputStream(bais); <br>
&nbsp; &nbsp; try{ <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;dis.readUTF(); <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;return (dis.readUTF().equals(cnword)); <br>
&nbsp; &nbsp;}catch(IOException e){ <br>
&nbsp; &nbsp;&nbsp; &nbsp; e.printStackTrace(); <br>
&nbsp; &nbsp;&nbsp; &nbsp; return false; <br>
&nbsp; &nbsp;} <br>
} <br>
<br>
<br>
RecordComparator比较接口 <br>
&nbsp; &nbsp;<br>
&nbsp; &nbsp;比较器定义了一个比较接口，用于比较两条记录是否匹配，或符合一定的逻辑关系。<br>
<br>
&nbsp; &nbsp;须实现compare方法 <br>
&nbsp; &nbsp;compare(byte[] rec1,&nbsp;&nbsp;byte[] rec2)<br>
&nbsp; &nbsp;当rec1 在次序上领先于rec2 时，返回RecordComparator.PRECEDES；<br>
&nbsp; &nbsp;反之则返回RecordComparator.FOLLOWS；<br>
&nbsp; &nbsp;参数相等，返回RecordComparator.EQUIVALENT。 <br>
<br>
&nbsp; &nbsp;private static class WordComparator implements RecordComparator{ <br>
&nbsp; &nbsp;&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;public int compare(byte[] word_1, byte[] word_2) { <br>
&nbsp; &nbsp;<br>
&nbsp; &nbsp;&nbsp;&nbsp;try { <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Word word1 = Word.deserialize(word_1); <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Word word2 = Word.deserialize(word_2); <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;long dateTime1 = word1.getDateTime(); <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;long dateTime2 = word2.getDateTime(); <br>
&nbsp; &nbsp;&nbsp;&nbsp;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;if(dateTime1 &lt; dateTime2){ <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return RecordComparator.FOLLOWS; <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;} <br>
&nbsp; &nbsp; <br>
&nbsp; &nbsp; if(dateTime1 &gt; dateTime2){ <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; return RecordComparator.PRECEDES; <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;} <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;return RecordComparator.EQUIVALENT; <br>
&nbsp; &nbsp;&nbsp;&nbsp;}<br>
&nbsp; &nbsp;&nbsp;&nbsp;catch (IOException e) <br>
&nbsp; &nbsp;&nbsp;&nbsp;{ <br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;e.printStackTrace(); <br>
&nbsp; &nbsp;&nbsp; &nbsp;} <br>
&nbsp; &nbsp;&nbsp; &nbsp;return 0; <br>
&nbsp; &nbsp; } <br>
} <br>
<br>
<br>
<br>
<br>
<br>
RecordListener 监听器接口 <br>
<br>
RecordListener是用于接受监听记录仓储中记录添加，更改或删除记录等事件的接口。<br>
利用 RecordStore 的addRecordListener 方法来注册一个监听器。<br>
使用监听器必须实现 3 个方法：<br>
recordAdded，<br>
recordChanged <br>
recordDeleted，<br>
<br>
都需传入两个参数：记录仓储名称 recordStroe 与记录号recordId。 <br>
<br>
&nbsp;&nbsp;recordAdded：当一条新的记录被添加到仓储空间的时候，该方法被触发。 <br>
&nbsp;&nbsp;recordChanged：当一条记录被修改时使用。 <br>
&nbsp;&nbsp;recordDeleted：当一条记录从记录仓储中删除时调用。 <br>
<br>
注意，RecordListener 是在对记录仓储的操作动作完成以后被调用的！<br>
特别在recordDeleted 方法中，由于传入的记录已经删除，如再使用<br>
getRecord()试图取得刚刚被删除记录的话，会抛出 InvalidRecordIDException 异常。 <br>
<br>
<br>
<br>
<br>
&nbsp;&nbsp;getLastModified()：&nbsp; &nbsp;返回记录仓储最后更新时间。 <br>
&nbsp;&nbsp;getName()：&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;返回一个已经打开了的记录仓储名称。 <br>
&nbsp;&nbsp;getNumRecords()：&nbsp; &nbsp;&nbsp;&nbsp;返回当前仓储中记录总数。 <br>
&nbsp;&nbsp;getSizeAvailable()：&nbsp;&nbsp;返回当前仓储中可用的字节数。 <br>
&nbsp;&nbsp;getVersion()：&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;返回记录仓储版本号。 <br>
&nbsp;&nbsp;listRecordStores()：&nbsp;&nbsp;获取该MIDlet套件中所有的记录仓储列表。
<br><img src ="http://www.cnitblog.com/kenlistian/aggbug/45972.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-06-24 22:27 <a href="http://www.cnitblog.com/kenlistian/archive/2008/06/24/45972.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>j2me 笔记6---canvas初步认识。</title><link>http://www.cnitblog.com/kenlistian/archive/2008/06/23/45944.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Mon, 23 Jun 2008 13:36:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/06/23/45944.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/45944.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/06/23/45944.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/45944.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/45944.html</trackback:ping><description><![CDATA[<br>&nbsp; 依旧是拿例子来学习，再翻一翻讲解，就大致了解一个程序的架构。<br><br>在用Canvas写手机界面，其实不过就是自画图而已，在wtk中有个minicolor的例子，<br>用的是canvas类，其中也讲解了相关的知识点。<br>这里罗列下几个知识点：<br><br>调用repaint()产生重绘事件。<br><br>底层事件分为三类：<br>&nbsp;Press Events&nbsp; 按键事件<br>&nbsp;Action Keys&nbsp;&nbsp; 动作按键<br>&nbsp;PointerEvents 触控事件<br>&nbsp;<br>按键事件<br>keyPressed()&nbsp;&nbsp;&nbsp; <br>keyReleased()<br>keyRepeated()<br><br>&nbsp; 在RepeatEvents 不是 JTWI 要求强制支持的，故需调用hasRepeatEvents判定。<br><br>&nbsp;&nbsp; 当按下按键都会触发 keyPressed()函数，并传入相应位置的整数值，<br>&nbsp;&nbsp; 有KEY_NUM0- KEY_NUM9 十个常数分别代表键盘上的 0-9,及其两个功能键，<br>&nbsp;&nbsp; KEY_STAR,KEY_POUND, 若传入的值小于 0，则为不合法的 keycode<br>&nbsp;<br>&nbsp;动作按键主要针对游戏来设计的，<br>&nbsp;有如下：<br>&nbsp; UP,DOWN,LEFT,RIGHT,<br>&nbsp; GAME_A,GAME_B,GAME_C,GAME_D,<br>&nbsp; 当按下这些按键时会映射到为每个按键事件编写的方法，来完成一些动作。<br>&nbsp; 在MIDP2.0里已有游戏开发包了可供学习。<br>&nbsp;<br>触控事件主要面向高端设备，并非 JTWI 要求强制支持的，<br><br>pointerPressed(),<br>pointerReleased(),<br>pointerDragged()，<br><br>对应移动设备手写笔的点，击，拖拽几个动作。参考 WTK的说明文档 <br><br><br>在运行minicolor demo,老方法，创建该工程文件，及其同名类。（可以自命名）<br>注意一点的是：<br>在wtk中，无法直接调用canvas类，而需要一个midlet外包类来调用canvas类创建，<br>其方法也不过一个midlet框架，在其startApp()中调用Canvas实例类。<br>框架代码如下：<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;javax.microedition.midlet.</span><span style="color: #000000;">*</span><span style="color: #000000;">;&nbsp;&nbsp;<br>&nbsp;&nbsp;</span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;javax.microedition.lcdui.</span><span style="color: #000000;">*</span><span style="color: #000000;">;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;testCanvas&nbsp;</span><span style="color: #0000ff;">extends</span><span style="color: #000000;">&nbsp;MIDlet{&nbsp;&nbsp;<br><br>&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;Display&nbsp;&nbsp;&nbsp;display;&nbsp;&nbsp;<br><br>&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;testCanvas()<br>&nbsp;&nbsp;{&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display</span><span style="color: #000000;">=</span><span style="color: #000000;">Display.getDisplay(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">);&nbsp;&nbsp;<br>&nbsp;&nbsp;}&nbsp;&nbsp;<br><br>&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;startApp()<br>&nbsp;{&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp; //这里调用canvas实例类，在独立一个同目录minicolorchooser.java文件。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MiniColorChooser&nbsp;testCanvas&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;MiniColorChooser();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display.setCurrent(testCanvas);<br>&nbsp; }<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;pauseApp(){&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;}&nbsp;&nbsp;<br>&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;destroyApp(</span><span style="color: #0000ff;">boolean</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;unconditional){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;}&nbsp;&nbsp;<br><br>&nbsp;&nbsp;}</span></div>
<br>其中MiniColorChooser.java文件代码如下，加了注释，<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;"><br></span><span style="color: #0000ff;"></span><span style="color: #000000;"></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;javax.microedition.lcdui.</span><span style="color: #000000;">*</span><span style="color: #000000;">;<br><br></span><span style="color: #008000;">/**</span><span style="color: #008000;"><br>&nbsp;&nbsp;一个设置手机背景颜色的Canvas实现类<br>&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br></span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;MiniColorChooser&nbsp;</span><span style="color: #0000ff;">extends</span><span style="color: #000000;">&nbsp;Canvas&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/**</span><span style="color: #008000;">&nbsp;条状宽度&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;BORDER&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/**</span><span style="color: #008000;">&nbsp;颜色条高度&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;BAR_H&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">14</span><span style="color: #000000;">;&nbsp;&nbsp;<br><br></span><span style="color: #008000;"></span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;rgbColor;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;ndx&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;MiniColorChooser()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setColor(</span><span style="color: #000000;">0xffff00</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;setColor(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;RGB)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rgbColor&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;RGB&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0x00ffffff</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;颜色值是这样格式：&nbsp;&nbsp;0x00RRGGBB<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;getColor()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;rgbColor;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">画背景，修改界面全在这里</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;paint(Graphics&nbsp;g)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;w&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;getWidth();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;h&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;getHeight();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;sample_w&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;w&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;sample_h&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;h&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;((BAR_H&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;BORDER)&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">界面高-&nbsp;3*&nbsp;条状颜色栏</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;sample_y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;BORDER;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">调颜色栏的蓝，绿，红的y坐标位置</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;b_y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;sample_y&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;sample_h&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;(BORDER&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;g_y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;b_y&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;BAR_H;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;r_y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;g_y&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;BAR_H;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">先把界面涂为黑板色</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.setColor(</span><span style="color: #000000;">0x000000</span><span style="color: #000000;">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.fillRect(</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;w,&nbsp;h);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">再画调色板区域。x0=2，y0=2,&nbsp;x1=背景宽,&nbsp;y1=sample_h</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.setColor(rgbColor);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.fillRect(BORDER,&nbsp;sample_y,&nbsp;sample_w,&nbsp;sample_h);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">画颜色调节栏&nbsp;，先蓝色</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;blue&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(rgbColor&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0xff</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.setColor(</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">255</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.fillRect(</span><span style="color: #000000;">20</span><span style="color: #000000;">,&nbsp;b_y,&nbsp;blue&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">10</span><span style="color: #000000;">);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">绿</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;green&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(rgbColor&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">8</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0xff</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.setColor(</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">255</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.fillRect(</span><span style="color: #000000;">20</span><span style="color: #000000;">,&nbsp;g_y,&nbsp;green&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">10</span><span style="color: #000000;">);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;red&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(rgbColor&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">16</span><span style="color: #000000;">)&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0xff</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.setColor(</span><span style="color: #000000;">255</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.fillRect(</span><span style="color: #000000;">20</span><span style="color: #000000;">,&nbsp;r_y,&nbsp;red&nbsp;</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">4</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">10</span><span style="color: #000000;">);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">写blue&nbsp;,green&nbsp;,red&nbsp;颜色数值</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.setColor(</span><span style="color: #000000;">255</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">255</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">255</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.drawString(Integer.toString(blue),&nbsp;</span><span style="color: #000000;">18</span><span style="color: #000000;">,&nbsp;b_y&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;Graphics.RIGHT&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;Graphics.TOP);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.drawString(Integer.toString(green),&nbsp;</span><span style="color: #000000;">18</span><span style="color: #000000;">,&nbsp;g_y&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;Graphics.RIGHT&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;Graphics.TOP);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.drawString(Integer.toString(red),&nbsp;</span><span style="color: #000000;">18</span><span style="color: #000000;">,&nbsp;r_y&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">,&nbsp;Graphics.RIGHT&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;Graphics.TOP);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">画调节颜色栏边框，注意，画边框，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">ndx&nbsp;=&nbsp;0,1,2,则分别对应当前激活的调节栏。</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(ndx&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;y&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;b_y&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;(ndx&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;BAR_H);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.drawRect(</span><span style="color: #000000;">20</span><span style="color: #000000;">,&nbsp;y,&nbsp;</span><span style="color: #000000;">63</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">10</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">当按键不松时</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;keyRepeated(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;key)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyPressed(key);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">/**</span><span style="color: #008000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;按键事件<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">*/</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;keyPressed(</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;key)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;action&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;getGameAction(key);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;dir&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">switch</span><span style="color: #000000;">&nbsp;(action)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">case</span><span style="color: #000000;">&nbsp;RIGHT:&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">改变颜色值</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dir&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">case</span><span style="color: #000000;">&nbsp;LEFT:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dir&nbsp;</span><span style="color: #000000;">-=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">case</span><span style="color: #000000;">&nbsp;UP:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ndx&nbsp;</span><span style="color: #000000;">-=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">case</span><span style="color: #000000;">&nbsp;DOWN:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ndx&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">default</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;ndx&nbsp;=0,1,2&nbsp;表示蓝，绿，红三个颜色条件栏<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;一个颜色&nbsp;0xff&nbsp;ff&nbsp;ff，&nbsp;其第一个ff表示红，2表示绿，3表示蓝，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;通过&nbsp;&gt;&gt;&nbsp;方式获取&nbsp;对应颜色</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(ndx&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ndx&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(ndx&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ndx&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(ndx&nbsp;</span><span style="color: #000000;">&gt;=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">取出对于颜色值，改变</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(rgbColor&nbsp;</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">&nbsp;(ndx&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">8</span><span style="color: #000000;">))&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0xff</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000;">+=</span><span style="color: #000000;">&nbsp;(dir&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0x20</span><span style="color: #000000;">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">颜色呈8次递进变化。</span><span style="color: #008000;"><br></span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(v&nbsp;</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(v&nbsp;</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">255</span><span style="color: #000000;">)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">255</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">int</span><span style="color: #000000;">&nbsp;mask&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0xff</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;(ndx&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">8</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">将改变的颜色值&nbsp;加到对应位。</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;rgbColor&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(rgbColor&nbsp;</span><span style="color: #000000;">&amp;</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">~</span><span style="color: #000000;">mask)&nbsp;</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;(v&nbsp;</span><span style="color: #000000;">&lt;&lt;</span><span style="color: #000000;">&nbsp;(ndx&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">8</span><span style="color: #000000;">));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">立即重画</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;repaint();<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span></div>
<br><br>运行效果如下，<br><img src="http://www.cnitblog.com/images/cnitblog_com/kenlistian/test_canvas.JPG" border="0"><br><br>在学习中，看别人的代码细节不是很清楚，如果运行一下，就能理解代码是做什么了。<br>看来有时看代码，得动手多过几遍。<br><br><br><br><br><br><br><br><br><br><br>  <img src ="http://www.cnitblog.com/kenlistian/aggbug/45944.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-06-23 21:36 <a href="http://www.cnitblog.com/kenlistian/archive/2008/06/23/45944.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>j2me 笔记5---ticker例子</title><link>http://www.cnitblog.com/kenlistian/archive/2008/06/22/45925.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Sun, 22 Jun 2008 04:00:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/06/22/45925.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/45925.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/06/22/45925.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/45925.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/45925.html</trackback:ping><description><![CDATA[<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--></div>
继续学习j2me的ui编程，下面是实现ticker的例子，运行就是这样子：<br><img alt=""  src="http://www.cnitblog.com/images/cnitblog_com/kenlistian/ticker.jpg" height="720" width="322"><br><br><br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;"><br></span><span style="color: #008000;">/*</span><span style="color: #008000;"><br>一个简单的提示现实类，在每个窗体中只允许有一个该类的实例。<br>如下的例子。<br>其代码如同以前加载工程中一样，运行它，测试界面如下：<br><br></span><span style="color: #008000;">*/</span><span style="color: #000000;"><br><br></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;javax.microedition.lcdui.</span><span style="color: #000000;">*</span><span style="color: #000000;">;<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;javax.microedition.lcdui.Command;<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;javax.microedition.lcdui.CommandListener;<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;javax.microedition.lcdui.Display;<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;javax.microedition.lcdui.Displayable;<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;javax.microedition.midlet.MIDlet;<br><br></span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;tickerdemo1&nbsp;</span><span style="color: #0000ff;">extends</span><span style="color: #000000;">&nbsp;MIDlet&nbsp;</span><span style="color: #0000ff;">implements</span><span style="color: #000000;">&nbsp;CommandListener&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;String&nbsp;TICKER_TEXT&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">类似走马灯，又类似提示器。。。&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">运行下看看。。。</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">boolean</span><span style="color: #000000;">&nbsp;firstTime;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;Form&nbsp;mainForm;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;Command&nbsp;exitCommand&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Command(</span><span style="color: #000000;">"</span><span style="color: #000000;">Exit</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;Command.EXIT,&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;Display&nbsp;myDisplay;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;Ticker&nbsp;t;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;tickerdemo1()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myDisplay&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Display.getDisplay(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;firstTime&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainForm&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Form(</span><span style="color: #000000;">"</span><span style="color: #000000;">新窗体</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainForm.setCommandListener(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;startApp()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(firstTime)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Ticker(TICKER_TEXT);&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">创建实例</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainForm.setTicker(t);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;firstTime&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainForm.addCommand(exitCommand);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myDisplay.setCurrent(mainForm);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;destroyApp(</span><span style="color: #0000ff;">boolean</span><span style="color: #000000;">&nbsp;unconditional)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;myDisplay.setCurrent((Displayable)</span><span style="color: #0000ff;">null</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notifyDestroyed();<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;pauseApp()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;commandAction(Command&nbsp;c,&nbsp;Displayable&nbsp;s)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(c&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;exitCommand)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destroyApp(</span><span style="color: #0000ff;">true</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br></span></div>
<br><img src ="http://www.cnitblog.com/kenlistian/aggbug/45925.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-06-22 12:00 <a href="http://www.cnitblog.com/kenlistian/archive/2008/06/22/45925.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>j2me 笔记4--list例子</title><link>http://www.cnitblog.com/kenlistian/archive/2008/06/21/45920.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Sat, 21 Jun 2008 15:13:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/06/21/45920.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/45920.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/06/21/45920.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/45920.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/45920.html</trackback:ping><description><![CDATA[<br><br><br>一个list 例子来看，demo 中的例子，<br><br>打开toolkid2.52中，创建listDemo工程文件，然后创建listDeom类，<br>把下面代码贴在src下面的新建立的listdemo.java文件名中，在toolkid<br>中build，run，可以看到实际运行结果。<br><br>说明下：<br>1.import 导入lcdui 类包。这是一个界面包。<br>2.Display 类，display 实例，通过setCurrent切换到当前界面。<br>3.commandAction函数，处理相应按钮事件。<br><br><br>************************************************************<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;"><br></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;javax.microedition.lcdui.</span><span style="color: #000000;">*</span><span style="color: #000000;">;<br></span><span style="color: #0000ff;">import</span><span style="color: #000000;">&nbsp;javax.microedition.midlet.MIDlet;<br><br></span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">class</span><span style="color: #000000;">&nbsp;ListDemo&nbsp;</span><span style="color: #0000ff;">extends</span><span style="color: #000000;">&nbsp;MIDlet&nbsp;</span><span style="color: #0000ff;">implements</span><span style="color: #000000;">&nbsp;CommandListener&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;Command&nbsp;CMD_EXIT&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Command(</span><span style="color: #000000;">"</span><span style="color: #000000;">退出</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;Command.EXIT,&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">static</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">final</span><span style="color: #000000;">&nbsp;Command&nbsp;CMD_BACK&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Command(</span><span style="color: #000000;">"</span><span style="color: #000000;">返回</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;Command.BACK,&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;Display&nbsp;display;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;List&nbsp;mainList;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;List&nbsp;exclusiveList;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;List&nbsp;implicitList;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;List&nbsp;multipleList;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">private</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">boolean</span><span style="color: #000000;">&nbsp;firstTime;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;ListDemo()&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Display.getDisplay(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;stringArray&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;{&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Option&nbsp;A</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Option&nbsp;B</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Option&nbsp;C</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">Option&nbsp;D</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Image[]&nbsp;imageArray&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">创建单选list&nbsp;界面，包括退出按钮和返回按钮及其事件</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exclusiveList&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;List(</span><span style="color: #000000;">"</span><span style="color: #000000;">单选</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;Choice.EXCLUSIVE,&nbsp;stringArray,&nbsp;imageArray);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exclusiveList.addCommand(CMD_BACK);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exclusiveList.addCommand(CMD_EXIT);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exclusiveList.setCommandListener(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;implicitList&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;List(</span><span style="color: #000000;">"</span><span style="color: #000000;">简单</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;Choice.IMPLICIT,&nbsp;stringArray,&nbsp;imageArray);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;implicitList.addCommand(CMD_BACK);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;implicitList.addCommand(CMD_EXIT);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;implicitList.setCommandListener(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">多选list<img src="http://www.cnitblog.com/Images/dot.gif"></span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;multipleList&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;List(</span><span style="color: #000000;">"</span><span style="color: #000000;">多选</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;Choice.MULTIPLE,&nbsp;stringArray,&nbsp;imageArray);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;multipleList.addCommand(CMD_BACK);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;multipleList.addCommand(CMD_EXIT);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;multipleList.setCommandListener(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;firstTime&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">true</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;startApp()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(firstTime)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Image[]&nbsp;imageArray&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">null</span><span style="color: #000000;">;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">try</span><span style="color: #000000;">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">&nbsp;加载icon,位置在res下相对目录</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Image&nbsp;icon&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;Image.createImage(</span><span style="color: #000000;">"</span><span style="color: #000000;">/midp/uidemo/Icon.png</span><span style="color: #000000;">"</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;imageArray&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;Image[]&nbsp;{&nbsp;icon,&nbsp;icon,&nbsp;icon&nbsp;};<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">&nbsp;(java.io.IOException&nbsp;err)&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String[]&nbsp;stringArray&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;{&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">单选</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">简单</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;</span><span style="color: #000000;">"</span><span style="color: #000000;">多选</span><span style="color: #000000;">"</span><span style="color: #000000;">&nbsp;};<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">创建界面</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainList&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">new</span><span style="color: #000000;">&nbsp;List(</span><span style="color: #000000;">"</span><span style="color: #000000;">Choose&nbsp;type</span><span style="color: #000000;">"</span><span style="color: #000000;">,&nbsp;Choice.IMPLICIT,&nbsp;stringArray,&nbsp;imageArray);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainList.addCommand(CMD_EXIT);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mainList.setCommandListener(</span><span style="color: #0000ff;">this</span><span style="color: #000000;">);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">设置界面为当前为mainList</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display.setCurrent(mainList);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;firstTime&nbsp;</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;destroyApp(</span><span style="color: #0000ff;">boolean</span><span style="color: #000000;">&nbsp;unconditional)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">protected</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;pauseApp()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">处理按钮事件</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">public</span><span style="color: #000000;">&nbsp;</span><span style="color: #0000ff;">void</span><span style="color: #000000;">&nbsp;commandAction(Command&nbsp;c,&nbsp;Displayable&nbsp;d)&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(d.equals(mainList))&nbsp;{&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">当前界面为mainlist</span><span style="color: #008000;"><br></span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(c&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;List.SELECT_COMMAND)&nbsp;{&nbsp;</span><span style="color: #008000;">//<br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(d.equals(mainList))&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">置换界面</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">switch</span><span style="color: #000000;">&nbsp;(((List)d).getSelectedIndex())<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">case</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">0</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display.setCurrent(exclusiveList);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">case</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display.setCurrent(implicitList);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">case</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display.setCurrent(multipleList);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">break</span><span style="color: #000000;">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">//</span><span style="color: #008000;">在子界面，按钮为CMD_BACK，返回主list界面</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(c&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;CMD_BACK)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display.setCurrent(mainList);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(c&nbsp;</span><span style="color: #000000;">==</span><span style="color: #000000;">&nbsp;CMD_EXIT)&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;destroyApp(</span><span style="color: #0000ff;">false</span><span style="color: #000000;">);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;notifyDestroyed();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br><br></span></div>
<br><br><img src ="http://www.cnitblog.com/kenlistian/aggbug/45920.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-06-21 23:13 <a href="http://www.cnitblog.com/kenlistian/archive/2008/06/21/45920.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>j2me 笔记3-----开发步骤</title><link>http://www.cnitblog.com/kenlistian/archive/2008/06/19/45882.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Thu, 19 Jun 2008 05:44:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/06/19/45882.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/45882.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/06/19/45882.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/45882.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/45882.html</trackback:ping><description><![CDATA[开发手机软件步骤<br>----------------<br><br>步骤<br><br>1&nbsp; 编写<br>2&nbsp; 编译 <br>3&nbsp; 混淆 (可选)<br>4&nbsp; 预审核 <br>5&nbsp; 打包&nbsp;&nbsp; 生产jar，同时需编写 jad后缀的描述文件。<br>6. 发布&nbsp;&nbsp; 将jar ，jad传输到手机。<br><br><br>再细致的描述如下：<br>-----------------------------------------------------------------------------------------------------<br>流程&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 工具&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输入&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输出 <br>编译&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; javac.exe 编译&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 源文件(*.java)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 未混淆的类文件（*.class） <br>混淆&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 第三方提供的工具&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 未混淆的类文件(*.class)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 混淆后的类文件(*.class)<br>预审&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; preverify.exe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 预审核,混淆后的类文件(*.class)&nbsp;&nbsp; 经过预先审核的类文件(*.class) <br>打包&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jar.exe&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 经过预先审核的类文件(*.class)&nbsp;&nbsp;&nbsp; 包文件(*.jar) <br><br>编写<br>描述&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 文本编辑工具&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 描述文件（*.jad） &nbsp;<br>文件 <br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br>安装&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 传输工具&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 包文件(*.jar),描述文件(*.jad)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (IR/BT/数据线/OTA)&nbsp;&nbsp; <br><br>运行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在仿真器或手机上正式运行 <br>-----------------------------------------------------------------------------------------------------<br><br><br>编译，混淆就不讲了。<br><br>混淆工具可以到如下下载：(不知道能不能下载得到)<br><br>JODE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://jode.sourceforge.net/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 开源 <br>ProGuard&nbsp;&nbsp;&nbsp; http://proguard.sourceforge.net/&nbsp; 开源 <br>RetroGuard&nbsp; http://www.retrologic.com/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 开源，中国移动百宝箱强制使用 <br>DashO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.preemptive.com/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 商业软件<br>ZKM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.zelix.com/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 商业软件<br>JBuilder&nbsp;&nbsp;&nbsp;&nbsp; http://www.borland.com/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 集成开发环境中内附混淆功能 <br><br><br><br>预审核 <br>&nbsp;<br>&nbsp;&nbsp; class 在传输过程中容易损坏或是被篡改，传统的Java 程序在运行前在本地机器上对.class <br>进行 Byte Code的审核。而对于手机这样的资源有限设备而言，在手机上进行此类的审核是浪费<br>资源的（如占用 CPU 的时间、消耗电力等） 。故须先在PC 机上使用 preverify.exe进行一部<br>份预选审核工作。这样在手机上进行的审核工作就减少了。 <br><br>打包也不需要赘叙。<br><br>安装<br>1&nbsp; 数据线，将 PC 与手机相连，下载文件 jar和jad<br>2&nbsp; 使用红外线 <br>3&nbsp; 使用蓝牙 <br>4&nbsp; 使用 OTA空中下载(利用短信/WAP) <br><br><img src ="http://www.cnitblog.com/kenlistian/aggbug/45882.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-06-19 13:44 <a href="http://www.cnitblog.com/kenlistian/archive/2008/06/19/45882.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>j2me 笔记2</title><link>http://www.cnitblog.com/kenlistian/archive/2008/06/18/45869.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Wed, 18 Jun 2008 13:24:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/06/18/45869.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/45869.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/06/18/45869.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/45869.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/45869.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp; 说百遍不如做一遍</p>
<p>&nbsp;
-------------------------------</p>
<p>&nbsp;</p>
<p>&nbsp; WTK&nbsp; 的全称是Sun J2ME Wireless Toolkit&nbsp; —— Sun的无线开发工具包。</p>
<p>&nbsp; 该工具箱包含了完整的生成工具、实用程序以及设备仿真器。</p>
<p>&nbsp; 所了解的版本，以及对应可以开发的程序。</p>
<p>&nbsp;</p>
<p>1.0.4 版只能够开发 MIDP1.0&nbsp; 应用程序。 </p>
<p>2.0&nbsp;&nbsp; 版只能够开发
MIDP2.0&nbsp; 应用程序。&nbsp; </p>
<p>2.1&nbsp;&nbsp; 版则可开发 MIDP1.0、&nbsp; JTWI(CLDC 1.0, MIDP2.0, WMA1.1)可改用 CLDC1.1或加入
MMAPI1.1)， </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 自定义(自己随机组合
Configuration, Profile以及 Optional Package)三种环境下的应用程序。 </p>
<p>&nbsp;</p>
<p>2.2&nbsp;&nbsp; 版， WTK全面的支持JTWI规范。即MIDP 2.0, CLDC 1.1, WMA
2.0, MMAPI 1.1,</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Web
Services (JSR 172), File and PIM APIs (JSR 75), Bluetooth and OBEX APIs (JSR
82), and </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3D
Graphics (JSR 184)；</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 也可用该版本开发面向
CLDC1.0&nbsp; 和 MIDP1.0 的应用程序。 </p>
<p>&nbsp;</p>
<p>&nbsp;现在都2.5了。估计支持以上。</p>
<p>&nbsp;</p>
<p>&nbsp;sun 的官方网站&nbsp;&nbsp; 下载链接：http://java.sun.com </p>
<p>&nbsp;</p>
<p>安装完，有以下几个目录：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; <!--[if gte vml 1]>
<![endif]--><!--[if !vml]--><img src="http://www.cnitblog.com/images/cnitblog_com/kenlistian/image002.jpg" v:shapes="_x0000_i1025" height="147" width="196"><!--[endif]--><!--[if gte mso 9]><xml>
</xml><![endif]--></p>
<p>&nbsp;&nbsp; apps---
demo</p>
<p>&nbsp;&nbsp; bin --- 开发工具目录</p>
<p>&nbsp;&nbsp; docs
---help</p>
<p>&nbsp;&nbsp; lib --- 库文件</p>
<p>&nbsp;&nbsp; sessions
--性能监控保存信息</p>
<p>&nbsp;&nbsp;
wtklib----模拟器及其工具</p>
<p>&nbsp;&nbsp;
j2mewtk_template ??</p>
<p>&nbsp;&nbsp; </p>
<p>&nbsp;</p>
<p>1.run toolkit</p>
<p><!--[if gte vml 1]>
<![endif]--><!--[if !vml]--><img src="http://www.cnitblog.com/images/cnitblog_com/kenlistian/image004.jpg" v:shapes="_x0000_i1026" height="153" width="222"><!--[endif]--><!--[if gte mso 9]><xml>
</xml><![endif]--></p>
<p>&nbsp;</p>
<p>2.create 一个简单的程序。</p>
<p>&nbsp;</p>
<p>&nbsp;<!--[if gte vml 1]>
<![endif]--><!--[if !vml]--><img style="width: 736px; height: 160px;" src="http://www.cnitblog.com/images/cnitblog_com/kenlistian/image006.jpg" v:shapes="_x0000_i1027"><!--[endif]--><!--[if gte mso 9]><xml>
</xml><![endif]--></p>
<p>3.new project</p>
<p>&nbsp; 在创建工程文件名中命名工程名。如hello</p>
<p><!--[if gte vml 1]>
<![endif]--><!--[if !vml]--><img src="http://www.cnitblog.com/images/cnitblog_com/kenlistian/image008.jpg" v:shapes="_x0000_i1028" height="152" width="337"><!--[endif]--></p>
<p>4.设置平台架构</p>
<p>&nbsp;</p>
<p><!--[if gte vml 1]>
<![endif]--><!--[if !vml]--><img src="http://www.cnitblog.com/images/cnitblog_com/kenlistian/image010.jpg" v:shapes="_x0000_i1029" height="603" width="454"><!--[endif]--></p>
<p>以最简单的MIDP1.0为架构。</p>
<p>点击ok，将在默认的目录中创建一个hello程序框架。</p>
<p>&nbsp;</p>
<p>一般在本机的C:\Documents and
Settings\Administrator\j2mewtk\2.5.2\apps\hello\</p>
<p>&nbsp;<br></p>
<p>&nbsp;</p>
<p>5.到该目录中的src中，创建和工程名同名的hello.java程序，粘贴下面的程序框架：</p>
<p>&nbsp;</p>
<p>import javax.microedition.lcdui.*; </p>
<p>import javax.microedition.midlet.MIDlet; </p>
<p>public class hello extends MIDlet { </p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; Display display; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; public
hello() { </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
super(); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
display = Display.getDisplay(this);</p>
<p>&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;
protected void startApp(){ </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Form
form = new Form("Hello!"); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
form.append("welcome!"); </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
display.setCurrent(form); </p>
<p>&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;
protected void pauseApp() {&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; } </p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;
protected void destroyApp(boolean arg0){&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; } </p>
<p>} </p>
<p>&nbsp;</p>
<p>6.回到wtk，builder，然后run。将模拟器出来，即可看到</p>
<p>&nbsp;一个简单的程序出来了。</p>
<p>&nbsp;</p>
<p><!--[if gte vml 1]>
<![endif]--><!--[if !vml]--><img src="http://www.cnitblog.com/images/cnitblog_com/kenlistian/image012.jpg" v:shapes="_x0000_i1030" height="484" width="299"><!--[endif]--></p>
<br><img src ="http://www.cnitblog.com/kenlistian/aggbug/45869.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-06-18 21:24 <a href="http://www.cnitblog.com/kenlistian/archive/2008/06/18/45869.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>j2me 笔记一</title><link>http://www.cnitblog.com/kenlistian/archive/2008/06/17/45836.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Tue, 17 Jun 2008 11:40:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/06/17/45836.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/45836.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/06/17/45836.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/45836.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/45836.html</trackback:ping><description><![CDATA[j2me 笔记一<br>
<br>
废话少说，自我的总结，标注笔记要纲。也算是自我学习j2me，做做笔记吧。<br>
<br>
学习材料来自：<a href="http://www.j2medev.com/Article/Class1/Class11/200506/278.html" target="_blank">http://www.j2medev.com/Article/Class1/Class11/200506/278.html</a><br>
<br>
1.1&nbsp; &nbsp;J2ME<br>
<br>
J2ME是SUN公司针对嵌入式、消费类电子产品推出的开发平台，<br>
与J2SE和J2EE共同组成Java技术的三个重要的分支。<br>
<br>
J2ME实际上是一系列规范的集合，由JCP组织制定相关的Java Specification Request（JSR）并发布，<br>
各个厂商会按照规范在自己的产品上进行实现，但是必须要通过TCK测试，这样确保兼容性。<br>
<br>
<br>
1.2&nbsp; &nbsp; J2ME平台体系结构<br>
<br>
&nbsp;&nbsp;J2ME平台由配置（Configuration）和简表（Profile）构成的。<br>
&nbsp;&nbsp;<br>
&nbsp;&nbsp;配置是提供给最大范围设备使用的最小类库集合，在配置中同时包含Java虚拟机。<br>
&nbsp;&nbsp;简表是针对一系列设备提供的开发包集合。<br>
&nbsp;&nbsp;<br>
&nbsp;&nbsp;可选包（Optional Package），它是针对特定设备提供的类库，<br>
<br>
&nbsp;&nbsp;如某些设备是支持蓝牙的， 针对此功能J2ME中制定了JSR82（Bluetooth API）提供了对蓝牙的支持。<br>
<br>
&nbsp;&nbsp;J2ME中有两个最主要的配置，<br>
&nbsp;&nbsp;a.Connected Limited Devices Configuration（CLDC）<br>
&nbsp;&nbsp;b.Connected Devices Configuration（CDC）。<br>
<br>
&nbsp;&nbsp;CLDC主要针对那些资源非常受限的设备比如手机、PDA、双工寻呼机等。<br>
&nbsp;&nbsp;CDC主要面对那些家电产品，比如机顶盒、汽车导航系统等。<br>
<br>
&nbsp;&nbsp;简表是以配置为基础的，<br>
&nbsp;&nbsp;Mobile Information Devices Profile（MIDP）就是CLDC上层的重要简表。<br>
<br>
1.3&nbsp; &nbsp; MIDlet 程序模型<br>
&nbsp; &nbsp;MIDP中定义了一种新的应用程序模型MIDlet。<br>
&nbsp; &nbsp;被Application Management Software（AMS）管理的。<br>
<br>
&nbsp; &nbsp;AMS负责MIDlet的安装、下载、运行和删除等操作。<br>
&nbsp; &nbsp;MIDlet向AMS通信通知应用管理软件自己状态的变化，<br>
&nbsp; &nbsp;MIDlet有三个状态，分别是pause、active和destroyed。<br>
&nbsp;&nbsp;<br>
&nbsp; &nbsp;用一张图很好表达了状态转换。<br>
&nbsp; &nbsp;<img src="http://www.j2medev.com/Article/UploadFiles/200506/20050608102905681.jpg" onclick="zoom(this)" onload="attachimg(this, 'load')" alt="" border="0"><br>
&nbsp; &nbsp;<br>
MiDlet的程序模型框架如下：<br>
import javax.microedition.midlet.*;<br>
import javax.microedition.lcdui.*;<br>
<br>
public class HelloWorld extends MIDlet{<br>
<br>
&nbsp; &nbsp;private Display display;<br>
<br>
&nbsp; &nbsp;//构造函数<br>
&nbsp; &nbsp;public HelloWorld(){<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp; display = Display.getDisplay(this);<br>
&nbsp; &nbsp;&nbsp; &nbsp; System.out.println("Constructor");<br>
<br>
&nbsp; &nbsp;}<br>
<br>
&nbsp; &nbsp;public void startApp(){<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp; System.out.println("startApp is called.");<br>
&nbsp; &nbsp;&nbsp; &nbsp; Form f = new Form("HelloTest"); <br>
&nbsp; &nbsp;&nbsp; &nbsp; display.setCurrent(f);<br>
&nbsp; &nbsp;} <br>
<br>
&nbsp; &nbsp;public void pauseApp(){<br>
&nbsp; &nbsp;&nbsp; &nbsp; System.out.println("pauseApp is called.");<br>
&nbsp; &nbsp;&nbsp; &nbsp; }<br>
<br>
&nbsp; &nbsp;public void destroyApp(boolean unconditional){<br>
&nbsp; &nbsp;&nbsp; &nbsp; System.out.println("destroyApp is called.");<br>
&nbsp; &nbsp;&nbsp; &nbsp; }<br>
<br>
}<br>
<br>
编译该程序后运行，控制台上输出：Constructor startApp is called.<br>
退出该程序时，控制台就会输出：&nbsp; &nbsp;destroyApp is called.
<br><img src ="http://www.cnitblog.com/kenlistian/aggbug/45836.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-06-17 19:40 <a href="http://www.cnitblog.com/kenlistian/archive/2008/06/17/45836.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>备注二进制转换</title><link>http://www.cnitblog.com/kenlistian/archive/2008/05/29/44522.html</link><dc:creator>kenlistian</dc:creator><author>kenlistian</author><pubDate>Thu, 29 May 2008 02:12:00 GMT</pubDate><guid>http://www.cnitblog.com/kenlistian/archive/2008/05/29/44522.html</guid><wfw:comment>http://www.cnitblog.com/kenlistian/comments/44522.html</wfw:comment><comments>http://www.cnitblog.com/kenlistian/archive/2008/05/29/44522.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/kenlistian/comments/commentRss/44522.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/kenlistian/services/trackbacks/44522.html</trackback:ping><description><![CDATA[<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;unicodetest<br><img id=Codehighlighter1_25_1231_Open_Image onclick="this.style.display='none'; Codehighlighter1_25_1231_Open_Text.style.display='none'; Codehighlighter1_25_1231_Closed_Image.style.display='inline'; Codehighlighter1_25_1231_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_25_1231_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_25_1231_Closed_Text.style.display='none'; Codehighlighter1_25_1231_Open_Image.style.display='inline'; Codehighlighter1_25_1231_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_25_1231_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_25_1231_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;main(string&nbsp;args[])<br><img id=Codehighlighter1_70_128_Open_Image onclick="this.style.display='none'; Codehighlighter1_70_128_Open_Text.style.display='none'; Codehighlighter1_70_128_Closed_Image.style.display='inline'; Codehighlighter1_70_128_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_70_128_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_70_128_Closed_Text.style.display='none'; Codehighlighter1_70_128_Open_Image.style.display='inline'; Codehighlighter1_70_128_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>　&nbsp;</span><span id=Codehighlighter1_70_128_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_70_128_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　unicodetest　ut&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;unicodetest();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　ut.test1();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>　&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;test1()<br><img id=Codehighlighter1_155_927_Open_Image onclick="this.style.display='none'; Codehighlighter1_155_927_Open_Text.style.display='none'; Codehighlighter1_155_927_Closed_Image.style.display='inline'; Codehighlighter1_155_927_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_155_927_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_155_927_Closed_Text.style.display='none'; Codehighlighter1_155_927_Open_Image.style.display='inline'; Codehighlighter1_155_927_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;</span><span id=Codehighlighter1_155_927_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_155_927_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　string&nbsp;str&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">测试信息abc123</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_197_899_Open_Image onclick="this.style.display='none'; Codehighlighter1_197_899_Open_Text.style.display='none'; Codehighlighter1_197_899_Closed_Image.style.display='inline'; Codehighlighter1_197_899_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_197_899_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_197_899_Closed_Text.style.display='none'; Codehighlighter1_197_899_Open_Image.style.display='inline'; Codehighlighter1_197_899_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>　</span><span id=Codehighlighter1_197_899_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_197_899_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　　&nbsp;</span><span style="COLOR: #0000ff">byte</span><span style="COLOR: #000000">[]&nbsp;b&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;str.getbytes(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">gbk</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　　&nbsp;system.out.println(str&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;-(gbk)编码:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;bytestohexstr(b));<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　　&nbsp;system.out.println(</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　　&nbsp;str&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;string(b,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">gbk</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　　&nbsp;system.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">从gbk编码&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">　</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;bytestohexstr(b)&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;重新转换为字串:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;str);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　　&nbsp;system.out.println(</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　　&nbsp;b&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;str.getbytes(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">unicodebigunmarked</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　　&nbsp;system.out.println(str&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;-(ucs2)编码:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;bytestohexstr(b));<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　　&nbsp;system.out.println(</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　　&nbsp;str&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;string(b,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">unicodebigunmarked</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　　&nbsp;system.out.println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">从(ucs2)编码&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">　</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;bytestohexstr(b)&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;重新转换为字串:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;str);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　　&nbsp;system.out.println(</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　　&nbsp;b&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;str.getbytes(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ascii</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　　&nbsp;system.out.println(str&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;-(ascii)编码:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;bytestohexstr(b));<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　　&nbsp;system.out.println(</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>　　　}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_922_923_Open_Image onclick="this.style.display='none'; Codehighlighter1_922_923_Open_Text.style.display='none'; Codehighlighter1_922_923_Closed_Image.style.display='inline'; Codehighlighter1_922_923_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_922_923_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_922_923_Closed_Text.style.display='none'; Codehighlighter1_922_923_Open_Image.style.display='inline'; Codehighlighter1_922_923_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>　　　</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(exception&nbsp;e)</span><span id=Codehighlighter1_922_923_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_922_923_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>　&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　&nbsp;</span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">&nbsp;string&nbsp;bytestohexstr(</span><span style="COLOR: #0000ff">byte</span><span style="COLOR: #000000">[]&nbsp;b)<br><img id=Codehighlighter1_973_1229_Open_Image onclick="this.style.display='none'; Codehighlighter1_973_1229_Open_Text.style.display='none'; Codehighlighter1_973_1229_Closed_Image.style.display='inline'; Codehighlighter1_973_1229_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_973_1229_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_973_1229_Closed_Text.style.display='none'; Codehighlighter1_973_1229_Open_Image.style.display='inline'; Codehighlighter1_973_1229_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>　&nbsp;</span><span id=Codehighlighter1_973_1229_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_973_1229_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(b&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　stringbuffer&nbsp;strbuffer&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;stringbuffer(b.length&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;b.length;&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_1106_1193_Open_Image onclick="this.style.display='none'; Codehighlighter1_1106_1193_Open_Text.style.display='none'; Codehighlighter1_1106_1193_Closed_Image.style.display='inline'; Codehighlighter1_1106_1193_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1106_1193_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1106_1193_Closed_Text.style.display='none'; Codehighlighter1_1106_1193_Open_Image.style.display='inline'; Codehighlighter1_1106_1193_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>　</span><span id=Codehighlighter1_1106_1193_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1106_1193_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　　&nbsp;strbuffer.append(integer.tohexstring(b&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0xff</span><span style="COLOR: #000000">));<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　　&nbsp;strbuffer.append(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>　　　}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　　　</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;strbuffer.tostring();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>　&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<img src ="http://www.cnitblog.com/kenlistian/aggbug/44522.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/kenlistian/" target="_blank">kenlistian</a> 2008-05-29 10:12 <a href="http://www.cnitblog.com/kenlistian/archive/2008/05/29/44522.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>