﻿<?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>语源科技BlogJava-Fang.W</title><link>http://www.blogjava.net/Fang-W/</link><description>我也是江湖中人，但没有武功，比的是技术！——21世纪的江湖人</description><language>zh-cn</language><lastBuildDate>Tue, 28 Apr 2026 18:56:31 GMT</lastBuildDate><pubDate>Tue, 28 Apr 2026 18:56:31 GMT</pubDate><ttl>60</ttl><item><title>即将更新</title><link>http://www.blogjava.net/Fang-W/articles/138677.html</link><dc:creator>Fang.W</dc:creator><author>Fang.W</author><pubDate>Wed, 22 Aug 2007 10:53:00 GMT</pubDate><guid>http://www.blogjava.net/Fang-W/articles/138677.html</guid><wfw:comment>http://www.blogjava.net/Fang-W/comments/138677.html</wfw:comment><comments>http://www.blogjava.net/Fang-W/articles/138677.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Fang-W/comments/commentRss/138677.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Fang-W/services/trackbacks/138677.html</trackback:ping><description><![CDATA[好久没有更新了，最近没有什么进展。<br>马上就要更新了！哈哈，高兴，我成了一个论坛的版主了！
<img src ="http://www.blogjava.net/Fang-W/aggbug/138677.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Fang-W/" target="_blank">Fang.W</a> 2007-08-22 18:53 <a href="http://www.blogjava.net/Fang-W/articles/138677.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2ME程序操作文件系统</title><link>http://www.blogjava.net/Fang-W/archive/2007/08/07/134876.html</link><dc:creator>Fang.W</dc:creator><author>Fang.W</author><pubDate>Tue, 07 Aug 2007 02:28:00 GMT</pubDate><guid>http://www.blogjava.net/Fang-W/archive/2007/08/07/134876.html</guid><wfw:comment>http://www.blogjava.net/Fang-W/comments/134876.html</wfw:comment><comments>http://www.blogjava.net/Fang-W/archive/2007/08/07/134876.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/Fang-W/comments/commentRss/134876.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Fang-W/services/trackbacks/134876.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;一、是否能够读写想要自己编写的程序能够读写文件（注意这里所说的文件不是指jar包中的文件，是指比如手机内存或卡中的文件），首先要确认程序将要安装的手机是否支持 JSR75 ；其次还要知道该手机是否允许未签名的程序访问内部文件系统。如果其中有一个条件不能满足，那么程序就无法实现出文件的读写功能了。在对文件系统的操作方面，J2ME提供的功能是很有限的，之所以有这么多的限制，是为了安全着...&nbsp;&nbsp;<a href='http://www.blogjava.net/Fang-W/archive/2007/08/07/134876.html'>阅读全文</a><img src ="http://www.blogjava.net/Fang-W/aggbug/134876.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Fang-W/" target="_blank">Fang.W</a> 2007-08-07 10:28 <a href="http://www.blogjava.net/Fang-W/archive/2007/08/07/134876.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2ME中，Font和Color的设置</title><link>http://www.blogjava.net/Fang-W/archive/2007/07/31/133651.html</link><dc:creator>Fang.W</dc:creator><author>Fang.W</author><pubDate>Tue, 31 Jul 2007 12:41:00 GMT</pubDate><guid>http://www.blogjava.net/Fang-W/archive/2007/07/31/133651.html</guid><wfw:comment>http://www.blogjava.net/Fang-W/comments/133651.html</wfw:comment><comments>http://www.blogjava.net/Fang-W/archive/2007/07/31/133651.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.blogjava.net/Fang-W/comments/commentRss/133651.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Fang-W/services/trackbacks/133651.html</trackback:ping><description><![CDATA[<p>由于设备的限制，<span style="COLOR: red"><strong>手机中支持的字体类型很有限</strong></span>。我们只能使用手机支持的字体来构造Font类对象。<br>同其他类不一样，我们不能通过 new Font() 这样的语句，来创建一个Font实例，因为Font类没有构<br>造函数。那么如何获得一个特定的字体呢？我们可以通过如下方法来获得，请看代码：</p>
<p>
<table style="BORDER-RIGHT: #3366ff 1px dotted; PADDING-RIGHT: 1px; BORDER-TOP: #3366ff 1px dotted; PADDING-LEFT: 1px; PADDING-BOTTOM: 1px; MARGIN: 1px; BORDER-LEFT: #3366ff 1px dotted; WIDTH: 696px; PADDING-TOP: 1px; BORDER-BOTTOM: #3366ff 1px dotted; BORDER-COLLAPSE: collapse; HEIGHT: 168px; BACKGROUND-COLOR: #ffcc99" cellSpacing=0 cellPadding=3 border=1>
    <tbody>
        <tr>
            <td>
            <p>Font font；<br>font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_SMALL);</p>
            <p>public void paint(Graphics g) {<br>&nbsp;String str = "Welcome the Java world!";<br>&nbsp;g.setFont(font);<br>&nbsp;g.drawString(str, screenX / 2, MENU_Y, Graphics.TOP&nbsp;| Graphics.HCENTER);<br>}</p>
            </td>
        </tr>
    </tbody>
</table>
</p>
<p>函数getFont(int face, int style, int size)中：</p>
<p>1) face 为字体的外观，J2ME中提供了如下几种face：<br><span style="COLOR: #ff00ff">&nbsp;&nbsp; Font.FACE_SYSTEN<br>&nbsp;&nbsp; Font.FACE_MONOSPACE<br>&nbsp;&nbsp; Font.FACE_PROPORTIONAL</span></p>
<p>2) style 为字体的风格，J2ME中提供了如下几种style：<br>&nbsp;<span style="COLOR: #ff00ff">&nbsp; Font.STYLE_PLAIN<br>&nbsp;&nbsp; Font.STYLE_BOLD<br>&nbsp;&nbsp; Font.STYLE_ITALIC<br>&nbsp;&nbsp; Font.STYLE_UNDERLINED<br></span>其中，后三种可以混合使用，例：粗体加斜体的写法<br><span style="COLOR: #ff00ff">Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD|Font.STYLE_ITALIC, Font.SIZE_SMALL);</span></p>
<p>3) size 为字体的大小，J2ME中提供了如下几种size：<br><span style="COLOR: #ff00ff">&nbsp;&nbsp; Font.SIZE_SMALL<br>&nbsp;&nbsp; Font.SIZE_MEDIUM<br>&nbsp;&nbsp; Font.SIZE_LARGE</span></p>
<p>Font 类一般都是在Canvas类中使用，通过g.setFont(font)这样的语句来设置字体。在高级UI中，<br>一般是用不着Font类的。但有个例外，在MIDP2.0中，List类可以设置每行的字体格式。方法是：<br><span style="COLOR: #ff00ff">list.setFont(0,font);//第一行的字体为font</span></p>
<p>-------------------------------------------------------------</p>
<p>J2ME中没有color类，那么我们用什么方法来表达颜色呢？<br>在J2ME中，颜色的表达方式有两种：<br>
<table style="WIDTH: 320px; BORDER-COLLAPSE: collapse" cellSpacing=0 cellPadding=3 border=1>
    <tbody>
        <tr>
            <td>public void paint(Graphics g) {<br>&nbsp;//方法一，16进制表达方式<br>&nbsp;g.setColor(0xffffff);<br>&nbsp;//方法二，RGB表达方式<br>&nbsp;g.setColor(255, 255, 255);<br>}<br></td>
        </tr>
    </tbody>
</table>
<br>所以，一般颜色的设置也是在Canvas类中，通过Graphics的setColor()来设置要显示出的颜色。<br></p>
<img src ="http://www.blogjava.net/Fang-W/aggbug/133651.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Fang-W/" target="_blank">Fang.W</a> 2007-07-31 20:41 <a href="http://www.blogjava.net/Fang-W/archive/2007/07/31/133651.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于RMS的使用</title><link>http://www.blogjava.net/Fang-W/archive/2007/07/30/133320.html</link><dc:creator>Fang.W</dc:creator><author>Fang.W</author><pubDate>Mon, 30 Jul 2007 05:50:00 GMT</pubDate><guid>http://www.blogjava.net/Fang-W/archive/2007/07/30/133320.html</guid><wfw:comment>http://www.blogjava.net/Fang-W/comments/133320.html</wfw:comment><comments>http://www.blogjava.net/Fang-W/archive/2007/07/30/133320.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/Fang-W/comments/commentRss/133320.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Fang-W/services/trackbacks/133320.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天来讲一讲RMS。纯粹是在做项目过程中自己的一些领悟总结，如果有不正确的地方，请高人们指点。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在PC中我们可以将数据存在数据库中进行管理。那么在手机上，我们将数据存在哪里呢，又是怎样管理这些数据的呢？</p>
<p><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 手机系统为每一个MIDlet都开辟了存储空间用来存储程序数据，并且有专门的管理系统来管理这个存储空间。当然它只是一个简单的管理系统，不可能像PC上那样的数据库管理工具。我们称这个系统为&#8220;记录管理系统（RMS）&#8221;，它是一个简单的面向记录的数据库模型。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 来看看一些名词：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （1）记录存储：在一个程序中，你可以开辟n个记录存储，为每一个&#8220;存储&#8221;指定唯一的名字。它就相当于我们常说的&#8220;表&#8221;。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （2）记录：每个记录存储中包含着n个记录。即&#8220;表&#8221;中的每一个数据。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意：虽然我们可以将&#8220;记录存储&#8221;与&#8220;表&#8221;一起联想，但是它们的结构有很多的不同。&#8220;表&#8221;是二维的，对应着行和列。而&#8220;记录存储&#8221;是一维的，所有记录都是线性存放的。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 来看一段程序，演示了如何使用RMS来存储程序中的数据，比如存取游戏最高分。</p>
<p>&nbsp;&nbsp;&nbsp; RecordStore rs;<br>&nbsp;&nbsp;&nbsp; //存数据<br>&nbsp;&nbsp;&nbsp; public boolean newDate(String scorce, String name) {<br>&nbsp;&nbsp;byte[] byt;<br>&nbsp;&nbsp;try {<br>&nbsp;&nbsp;&nbsp;//指定记录存储的Name<br>&nbsp;&nbsp;&nbsp;String storeName = "HighScorces";<br>&nbsp;&nbsp;&nbsp;//打开该存储，如果不存在，就新建。<br>&nbsp;&nbsp;&nbsp;rs = RecordStore.openRecordStore(storeName, true);<br>&nbsp;&nbsp;&nbsp;//添加一个记录: scorce<br>&nbsp;&nbsp;&nbsp;byt = scorce.getBytes();<br>&nbsp;&nbsp;&nbsp;rs.addRecord(byt, 0, byt.length);<br>&nbsp;&nbsp;&nbsp;//添加一个记录：name<br>&nbsp;&nbsp;&nbsp;byt = name.getBytes("UTF-8");<br>&nbsp;&nbsp;&nbsp;rs.addRecord(byt, 0, byt.length);<br>&nbsp;&nbsp;&nbsp;//关闭该记录存储 <br>&nbsp;&nbsp;&nbsp;rs.closeRecordStore();<br>&nbsp;&nbsp;} catch (Exception e) {<br>&nbsp;&nbsp;&nbsp;System.out.println("save false!");<br>&nbsp;&nbsp;&nbsp;return false;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;return true;<br>&nbsp;&nbsp;&nbsp; } <br>&nbsp;&nbsp;&nbsp; //读数据<br>&nbsp;&nbsp;&nbsp; public String[] getData(int type, boolean flg) {<br>&nbsp;&nbsp;String[] strs = null;<br>&nbsp;&nbsp;try {<br>&nbsp;&nbsp;&nbsp;String storeName = "HighScorces";<br>&nbsp;&nbsp;&nbsp;rs = RecordStore.openRecordStore(storeName, true);<br>&nbsp;&nbsp;&nbsp;//获取该存储中的记录总数 <br>&nbsp;&nbsp;&nbsp;int num = rs.getNumRecords();<br>&nbsp;&nbsp;&nbsp;//获取下一个可用记录ID<br>&nbsp;&nbsp;&nbsp;int recordID = rs.getNextRecordID();<br>&nbsp;&nbsp;&nbsp;//<br>&nbsp;&nbsp;&nbsp;strs = new String[num / 2];<br>&nbsp;&nbsp;&nbsp;byte[] bytes;<br>&nbsp;&nbsp;&nbsp;for (int i = 0, j = 0; (i &lt; recordID - 1)&amp;&amp;(j&lt;num/2);) {<br>&nbsp;&nbsp;&nbsp;&nbsp;i += 2;<br>&nbsp;&nbsp;&nbsp;&nbsp;try {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (flg) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//读取name<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bytes = rs.getRecord(i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//读取scorce<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bytes = rs.getRecord(i-1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strs[j] = new String(bytes,"UTF-8");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j++;<br>&nbsp;&nbsp;&nbsp;&nbsp;} catch (InvalidRecordIDException ide) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//记录不存在，检查下一个记录ID<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;rs.closeRecordStore();<br>&nbsp;&nbsp;} catch (RecordStoreException e) {<br>&nbsp;&nbsp;&nbsp;System.out.println("no data!");<br>&nbsp;&nbsp;&nbsp;strs = null;<br>&nbsp;&nbsp;}catch (IOException ie){<br>&nbsp;&nbsp;&nbsp;System.out.println("IOException!");<br>&nbsp;&nbsp;&nbsp;strs = null;<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;return strs;<br>&nbsp;&nbsp;&nbsp; } <br>&nbsp;在这里解释一下，为什么要用 int recordID = rs.getNextRecordID(); 来获取下一个可用记录ID？<br>&nbsp;在RecordStore中每一个record都会被分配一个ID，且该ID是从1开始的。最重要的是每个被使用过的ID是不能被重新分配的。即：当我们用 deleteRecord(int recordId) 删除一个记录后，该记录的ID仍然不能被其他记录使用，也就是该ID所指向的记录是不存在的。因此，如果你用该ID去访问记录时，系统会抛出异常。但是，记录的总数为实际存在的所有记录的数目。所以我们可以通过获取下一个可用记录ID来进行相关操作。</p>
<p>&nbsp;记录存储是由系统平台来维护的，一般是不会丢失的。记录存储的生成位置也是由平台决定的，并不会暴露给MIDlet。 MIDlet只依赖与记录存储的名字来访问该记录存储。当一个MIDlet组件从系统删除时，所有与此MIDlet有关的存储记录都会被系统自动删除。<br></p>
<img src ="http://www.blogjava.net/Fang-W/aggbug/133320.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Fang-W/" target="_blank">Fang.W</a> 2007-07-30 13:50 <a href="http://www.blogjava.net/Fang-W/archive/2007/07/30/133320.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Eclipse打包J2ME，在真机上安装失败的原因 </title><link>http://www.blogjava.net/Fang-W/archive/2007/07/26/132458.html</link><dc:creator>Fang.W</dc:creator><author>Fang.W</author><pubDate>Thu, 26 Jul 2007 02:17:00 GMT</pubDate><guid>http://www.blogjava.net/Fang-W/archive/2007/07/26/132458.html</guid><wfw:comment>http://www.blogjava.net/Fang-W/comments/132458.html</wfw:comment><comments>http://www.blogjava.net/Fang-W/archive/2007/07/26/132458.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.blogjava.net/Fang-W/comments/commentRss/132458.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/Fang-W/services/trackbacks/132458.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 10pt">大家好，第一次在BlogJava中发表自己的文章，很兴奋呢！我也是做Java的，开发过程中遇到不少问题，在BlogJava中得到了很多帮助，为了回报大家，我也开了一个博客，奉献自己的经验。</p>
<p style="FONT-SIZE: 10pt">o(&#8745;_&#8745;)o...哈哈，希望大家多多支持！</p>
<p style="FONT-SIZE: 10pt">刚开始做J2ME项目时，有很多东西都搞不清楚。而且J2ME项目的开发规则和Web等项目的开发过程很不一样。刚开始有点不适应，不过随着学习的深入，很多问题都解决了。</p>
<p style="FONT-SIZE: 10pt">我们用的IDE是Eclipse3.2。这里来说一个常见的问题：你有没有这样的经历呢？在Eclipse中运行正常的程序，打包后，放在真机上却出现&#8220;安装失败&#8221;的错误。刚开始我也是觉得莫名奇妙，十分头疼。后来琢磨出来了原因：如果JAR要安装成功，则在这个包中必须有可以运行的程序，也就是MIDlet。也许大家都会说：&#8220;有啊！&#8221;是的，既然能在Eclipse中运行成功，那么程序是没有问题的。关键在于，手机上安装JAR时，系统是根据JAD来进行安装的，JAD就是J2ME项目的描述文件，在JAD中如果没有MIDlet-1这个属性，系统会认为这个包中没有可运行的程序，也就不会安装了。所以，我们在打包的时候，一定要看看JAD中是否有该属性，没有的话，可以在Eclipse中打开JAD，进行编辑。一般J2ME工程建好后，会自动生成一个JAD文件，我们可以在工程的根目录下看到。这样打包后，在包中的JAD也就会有MIDlet的描述了。如果没有在打包之前编辑JAD的话，可以直接在包中的JAD中添加 MIDlet-1：MIDlet1-name这条属性，有几个MIDlet就添加几个这样的属性，注意后面的阿拉伯数字是跟着变的，第二个MIDlet，则就添加MIDlet-2：MIDlet2-name 。如何在JAR中编辑JAD，我想不用多说了吧？如果不知道的话，就给我留言，我在解答。好了，这样jar就可以安装成功了。</p>
<img src ="http://www.blogjava.net/Fang-W/aggbug/132458.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/Fang-W/" target="_blank">Fang.W</a> 2007-07-26 10:17 <a href="http://www.blogjava.net/Fang-W/archive/2007/07/26/132458.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>