??xml version="1.0" encoding="utf-8" standalone="yes"?>
Font fontQ?br>font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD, Font.SIZE_SMALL); public void paint(Graphics g) {
]]>
造函数。那么如何获得一个特定的字体呢?我们可以通过如下Ҏ来获得,L代码Q?/p>
String str = "Welcome the Java world!";
g.setFont(font);
g.drawString(str, screenX / 2, MENU_Y, Graphics.TOP | Graphics.HCENTER);
}
函数getFont(int face, int style, int size)中:
1) face 为字体的外观QJ2ME中提供了如下几种faceQ?br> Font.FACE_SYSTEN
Font.FACE_MONOSPACE
Font.FACE_PROPORTIONAL
2) style 为字体的风格QJ2ME中提供了如下几种styleQ?br> Font.STYLE_PLAIN
Font.STYLE_BOLD
Font.STYLE_ITALIC
Font.STYLE_UNDERLINED
其中Q后三种可以混合使用Q例Q粗体加斜体的写?br>Font.getFont(Font.FACE_SYSTEM, Font.STYLE_BOLD|Font.STYLE_ITALIC, Font.SIZE_SMALL);
3) size 为字体的大小QJ2ME中提供了如下几种sizeQ?br> Font.SIZE_SMALL
Font.SIZE_MEDIUM
Font.SIZE_LARGE
Font cM般都是在CanvascM使用Q通过g.setFont(font)q样的语句来讄字体。在高UI中,
一般是用不着Fontcȝ。但有个例外Q在MIDP2.0中,Listcd以设|每行的字体格式。方法是Q?br>list.setFont(0,font);//W一行的字体为font
-------------------------------------------------------------
J2ME中没有colorc,那么我们用什么方法来表达颜色呢?
在J2ME中,颜色的表达方式有两种Q?br>
public void paint(Graphics g) { //Ҏ一Q?6q制表达方式 g.setColor(0xffffff); //Ҏ二,RGB表达方式 g.setColor(255, 255, 255); } |
在PC中我们可以将数据存在数据库中q行理。那么在手机上,我们数据存在哪里呢Q又是怎样理q些数据的呢Q?/p>
手机pȝ为每一个MIDlet都开辟了存储I间用来存储E序数据Qƈ且有专门的管理系l来理q个存储I间。当然它只是一个简单的理pȝQ不可能像PC上那L数据库管理工兗我们称q个pȝ?#8220;记录理pȝQRMSQ?#8221;Q它是一个简单的面向记录的数据库模型?/p>
来看看一些名词:
Q?Q记录存储:在一个程序中Q你可以开辟n个记录存储,为每一?#8220;存储”指定唯一的名字。它q当于我们常说?#8220;?#8221;?br> Q?Q记录:每个记录存储中包含着n个记录。即“?#8221;中的每一个数据?/p>
注意Q虽然我们可以将“记录存储”?#8220;?#8221;一赯惻I但是它们的结构有很多的不同?#8220;?#8221;是二l的Q对应着行和列。?#8220;记录存储”是一l的Q所有记录都是线性存攄?/p>
来看一D늨序,演示了如何用RMS来存储程序中的数据,比如存取游戏最高分?/p>
RecordStore rs;
//存数?br> public boolean newDate(String scorce, String name) {
byte[] byt;
try {
//指定记录存储的Name
String storeName = "HighScorces";
//打开该存储,如果不存在,新建?br> rs = RecordStore.openRecordStore(storeName, true);
//d一个记? scorce
byt = scorce.getBytes();
rs.addRecord(byt, 0, byt.length);
//d一个记录:name
byt = name.getBytes("UTF-8");
rs.addRecord(byt, 0, byt.length);
//关闭该记录存?
rs.closeRecordStore();
} catch (Exception e) {
System.out.println("save false!");
return false;
}
return true;
}
//L?br> public String[] getData(int type, boolean flg) {
String[] strs = null;
try {
String storeName = "HighScorces";
rs = RecordStore.openRecordStore(storeName, true);
//获取该存储中的记录L
int num = rs.getNumRecords();
//获取下一个可用记录ID
int recordID = rs.getNextRecordID();
//
strs = new String[num / 2];
byte[] bytes;
for (int i = 0, j = 0; (i < recordID - 1)&&(j<num/2);) {
i += 2;
try {
if (flg) {
//dname
bytes = rs.getRecord(i);
} else {
//dscorce
bytes = rs.getRecord(i-1);
}
strs[j] = new String(bytes,"UTF-8");
j++;
} catch (InvalidRecordIDException ide) {
//记录不存在,查下一个记录ID
continue;
}
}
rs.closeRecordStore();
} catch (RecordStoreException e) {
System.out.println("no data!");
strs = null;
}catch (IOException ie){
System.out.println("IOException!");
strs = null;
}
return strs;
}
在这里解释一下,Z么要?int recordID = rs.getNextRecordID(); 来获取下一个可用记录IDQ?br> 在RecordStore中每一个record都会被分配一个IDQ且该ID是从1开始的。最重要的是每个被用过的ID是不能被重新分配的。即Q当我们?deleteRecord(int recordId) 删除一个记录后Q该记录的ID仍然不能被其他记录用,也就是该ID所指向的记录是不存在的。因此,如果你用该ID去访问记录时Q系l会抛出异常。但是,记录的L为实际存在的所有记录的数目。所以我们可以通过获取下一个可用记录ID来进行相x作?/p>
记录存储是由pȝq_来维护的Q一般是不会丢失的。记录存储的生成位置也是由^台决定的Qƈ不会暴露lMIDlet?MIDlet只依赖与记录存储的名字来讉K该记录存储。当一个MIDletlg从系l删除时Q所有与此MIDlet有关的存储记录都会被pȝ自动删除?br>
o(∩_∩)o...哈哈Q希望大家多多支持!
刚开始做J2ME目Ӟ有很多东襉K搞不清楚。而且J2ME目的开发规则和Web{项目的开发过E很不一栗刚开始有点不适应Q不q随着学习的深入,很多问题都解决了?/p>
我们用的IDE是Eclipse3.2。这里来说一个常见的问题Q你有没有这Ll历呢?在Eclipse中运行正常的E序Q打包后Q放在真Z却出?#8220;安装p|”的错误。刚开始我也是觉得莫名奇妙Q十分头疹{后来琢出来了原因Q如果JAR要安装成功,则在q个包中必须有可以运行的E序Q也是MIDlet。也许大安会说Q?#8220;有啊Q?#8221;是的Q既然能在Eclipse中运行成功,那么E序是没有问题的。关键在于,手机上安装JARӞpȝ是根据JAD来进行安装的QJAD是J2ME目的描q文Ӟ在JAD中如果没有MIDlet-1q个属性,pȝ会认个包中没有可q行的程序,也就不会安装了。所以,我们在打包的时候,一定要看看JAD中是否有该属性,没有的话Q可以在Eclipse中打开JADQ进行编辑。一般J2ME工程建好后,会自动生成一个JAD文gQ我们可以在工程的根目录下看到。这h包后Q在包中的JAD也就会有MIDlet的描qC。如果没有在打包之前~辑JAD的话Q可以直接在包中的JAD中添?MIDlet-1QMIDlet1-nameq条属性,有几个MIDlet添加几个这L属性,注意后面的阿拉伯数字是跟着变的Q第二个MIDletQ则添加MIDlet-2QMIDlet2-name 。如何在JAR中编辑JADQ我想不用多说了吧?如果不知道的话,q我留aQ我在解{。好了,q样jar可以安装成功了?/p>