频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

6.3.2 Font文本显示

作者: 荣钦科技 出处:电子工业出版社华章公司  2007-09-18 16:54    砖    好    评论   进入论坛
阅读提示:《J2ME手机游戏设计技术与实战》主要介绍了在手机上开发J2ME游戏的方法,第六章内容为手机游戏界面的介绍。本节为Font文本显示的不同种类。

6.3.2  Font文本显示
游戏进行时常会出现文字显示,在LCDUI包中,有关文字表示的部分都包含在Font类里。Font类中有三个属性,分别为字型(face)、样式(style)和尺寸(size),如果三个属性被定义,文字就会根据属性做相应的设置。示例6-6中将这三种属性定义为:

1.字型(face)
public static final int FACE_MONOSPACE
设置字体为MONOSPACE字型。
public static final int FACE_PROPORTIONAL
设置字体为PROPORTIONAL字型。
public static final int FACE_SYSTEM
设置字体为SYSTEM字型。

2.样式(style)
public static final int STYLE_BOLD
设置字体为粗体。
public static final int STYLE_ITALIC
设置字体为斜体。
public static final int STYLE_PLAIN
设置字体为普通文字。
public static final int
STYLE_UNDERLINED
设置字体为有底线的格式。

3.尺寸(size)
public static final int SIZE_LARGE
设置字体显示最大尺寸。
public static final int SIZE_MEDIUM
设置字体显示普通尺寸。
public static final int SIZE_SMALL
设置字体显示小尺寸。
依据所设置的字体状况,Font类也提供了相关函数来取得字体所需要的有关信息。
public static Font getDefaultFont ()
取得系统所定义的字体。
public static Font getFont (int face,
int style,
int size)
定义显示字体的属性,传入的参数包含字型(face)、样式(style)和尺寸(size)。
public int getFace ()
取得当前字体的字型。
public int getStyle ()
取得当前字体的样式。
public int getSize ()
取得当前字体的尺寸。
public boolean isBold ()
如果字体是粗体(Bold)则返回true。
public boolean isItalic ()
如果字体是斜体(Italic)则返回true。
public boolean isPlain ()
如果字体是普通字型(Plain)则返回true。
public boolean int isUnderlined ()
如果字体是有底线字体(Underlined)则返回true。
手机文字显示本身还包含一些信息,这些信息可以作为游戏设计时界面分配的参考值之一。相关函数调用与图6-9所示。

图6-9  手机文字显示设置示意图

public int charsWidth (chae[] ch,
int offset,
int length)
计算字符数组中的字符串宽度总和,ch为字符数组,offset为起始字符,length为字符串长度。
public int charWidth (char ch)
取得ch的字符宽度。public int getBaselinePosition ()
如图所示,取得文字顶点到基线的pixel距离数。
public int getHeight ()
取得文字的标准高度。
public int stringWidth (String str)
取得str字符串的宽度。
public int substringWidth (String str,
int offset,
int len)
取得str字符串的子串的宽度,offset为起始位置,len为字符串长度。
示例6-6


Font字体类别变化程序
×/
import javax.microedition.midlet.×;
import javax.microedition.lcdui.×;

public class canvasDemo3 extends MIDlet
{
Display display;
canvasFont canvasfont;

public canvasDemo3()
{
canvasfont=new canvasFont();
display=Display.getDisplay(this);
}

public void startApp()
{
display.setCurrent(canvasfont);
}

public void pauseApp(){}

public void destroyApp(boolean unconditional){}
class canvasFont extends Canvas
{
String   keyname="";
int      face=Font.FACE_MONOSPACE;
int      style=Font.STYLE_BOLD;
int      size=Font.SIZE_LARGE;
String   wface="FACE_MONOSPACE";
String   wstyle="STYLE_BOLD";
String   wsize="SIZE_LARGE";
String[ ]  inputkey={"1","2","3","4","5","6","7","8","9","0"};
//建立Face的相关字体字型格式
int[ ]    moveface={Font.FACE_MONOSPACE, Font.FACE_PROPORTIONAL,
Font.FACE_SYSTEM};
//建立Style的相关字体样式格式
int[ ]    movestyle={Font.STYLE_BOLD, Font.STYLE_ITALIC, Font.STYLE_
PLAIN, Font.STYLE_UNDERLINED};
//建立Size的相关字号格式
int[ ]   movesize={Font.SIZE_LARGE, Font.SIZE_MEDIUM, Font.SIZESMALL};
String[ ] wordface={"FACE_MONOSPACE", "FACE_PROPORTIONAL", "FACE_
SYSTEM"};
String[ ] wordstyle={"STYLE_BOLD", "STYLE_ITALIC", "STYLE_PLAIN",
"STYLE_UNDERLINED"};
String[ ] wordsize={"SIZE_LARGE", "SIZE_MEDIUM", "SIZE_SMALL"};

public canvasFont(){}

public void keyPressed(int keyCode)
{
keyname=getKeyName(keyCode);
for(int i=0; i<10; i++)
if(keyname.equals(inputkey[i]))
if(i>=0 && i<=2)
{
wface=wordface[i];
face=moveface[i];
}
else if(i>=3 && i<=6){
wstyle=wordstyle[i-3];
style=movestyle[i-3];
}
else{
wsize=wordsize[i-7];
size=movesize[i-7];
}      
repaint();
}
public void paint(Graphics g)
{
g.setColor(0xFFFFFF);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0);
g.drawString("游戏文字显示字体", getWidth()/2, 10, Graphics.HCENTER |
Graphics.TOP);
g.drawString("设置FACE:"+wface, getWidth()/2, 30, Graphics.HCENTER |
Graphics.TOP);
g.drawString("FACE数值:"+String.valueOf(face), getWidth()/2, 45,
Graphics.HCENTER | Graphics.TOP);
g.drawString("设置STYLE:"+wstyle, getWidth()/2, 65, Graphics.HCENTER | Graphics.TOP);
g.drawString("STYLE数值:"+String.valueOf(style), getWidth()/2, 80,
Graphics.HCENTER | Graphics.TOP);
g.drawString("设置SIZE:"+wsize, getWidth()/2, 100, Graphics.HCENTER | Graphics.TOP);
g.drawString("SIZE数值:"+String.valueOf(size), getWidth()/2, 115,
Graphics.HCENTER | Graphics.TOP);
//设置显示字型
g.setFont(Font.getFont(face,style,size));
g.drawString("Font字体设置状态", getWidth()/2, 140, Graphics.HCENTER |
    Graphics.TOP);
}
}
}

运行结果如图6-10所示。
图6-10
图6-10
图6-10
【说明】
本程序演示了不同的字体在手机画面上的显示变化,字体的变化通过设置数字按键来控制。1至3为控制字体、4至7为控制样式、8至0为控制字号。同时字体参数的设置会在屏幕上显示出来。
【责任编辑:雪花 TEL:(010)68476606】

回书目   上一节   下一节
专题
Java实用开发全集
J2ME手机开发技术基础
Java类的基础教程专题
Java发展动态专题
手机病毒揭密
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
浏览器的战国时代
浏览器的战国时代
ARP攻击防范与解决方案
ARP攻击防范与解决方案
NAC安全访问控制
NAC安全访问控制
· NAC安全访问控制
· 网络布线测试仪器
· Windows Server 2008专..
· Windows远程桌面应用
· 网络故障排除宝典
· 运营商封堵ADSL共享 中..
· 解析35岁技术人的价值..
· 世纪枭雄比尔盖茨的王..
· 主流品牌防火墙配置
· ASP.NET开发教程
· 超级计算机TOP500专题
· Vista SP1对决XP SP3
· SQL Server 2008/2005..
· 程序员如何成长?
· C#技术开发指南
· 虚拟化技术还有点“虚”
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SOA 面向服务架构
SOA 面向服务架构
· SOA 面向服务架构
· SQL Server 2008/2005..
· Apache技术专题
· 三层交换技术专题
· SQL Server入门到精通
· Windows远程桌面应用
· C#技术开发指南
· Apache技术专题
· Windows集群服务应用
· C#技术开发指南
· 国际文档格式标准开战
· 路由器设置与口令恢复
· Linux 集群技术专题
· PHP开发应用手册
· SOA 面向服务架构
· 企业数据恢复指南
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SQL Server入门到精通
SQL Server入门到精通
· SQL Server入门到精通
· SQL Server 2008/2005..
· SOA 面向服务架构
· Apache技术专题
· C#技术开发指南
· 三层交换技术专题
· Apache技术专题
· C#技术开发指南
· Windows远程桌面应用
· 企业数据恢复指南
· Windows集群服务应用
· 路由器设置与口令恢复
· Linux 集群技术专题
· SOA 面向服务架构
· 了解统一威胁管理(UTM)..
· 反垃圾邮件技术应用