📄 8.htm
字号:
src="8.files/menu_dotline.gif" width=138></TD></TR>
<TR>
<TD width=15> </TD>
<TD width=143 height=23><A class=css2
href="http://www.inhand.com.cn/solution/j2me/j2me_9.htm">第九章:MIDP
API</A></TD></TR>
<TR>
<TD align=middle colSpan=2><IMG height=1
src="8.files/menu_dotline.gif" width=138></TD></TR>
<TR>
<TD width=15 height=23> </TD>
<TD width=143 height=23><A class=css2
href="http://www.inhand.com.cn/solution/j2me/j2me_10.htm">第十章:CDC
API</A></TD></TR>
<TR>
<TD align=middle colSpan=2><IMG height=1
src="8.files/menu_dotline.gif" width=138></TD></TR>
<TR>
<TD width=15> </TD>
<TD width=143 height=23><A class=css2
href="http://www.inhand.com.cn/solution/j2me/j2me_11.htm">第十一章:总结</A></TD></TR>
<TR>
<TD align=middle colSpan=2><IMG height=1
src="8.files/menu_dotline.gif" width=138></TD></TR>
<TR>
<TD align=middle colSpan=2><IMG height=1
src="8.files/menu_dotline.gif"
width=138></TD></TR></TBODY></TABLE></TD>
<TD width=1 bgColor=#cccccc><IMG height=1 src="8.files/0.gif"
width=1></TD>
<TD vAlign=top width=594>
<TABLE cellSpacing=0 cellPadding=0 width=594 border=0>
<TBODY>
<TR>
<TD width=30><IMG height=21 src="8.files/0.gif"
width=30></TD>
<TD width=534>
<TABLE cellSpacing=0 cellPadding=0 width=534 border=0>
<TBODY>
<TR>
<TD class=sk height=20><IMG height=20
src="8.files/0.gif" width=20></TD></TR>
<TR>
<TD class=sk><IMG height=20
src="8.files/cell1_04.jpg" width=100
border=0></TD></TR>
<TR>
<TD class=sk bgColor=#cccccc><IMG height=1
src="8.files/0.gif" width=1></TD></TR>
<TR>
<TD class=sk height=20> </TD></TR>
<TR>
<TD class=sk>
<TABLE cellSpacing=0 cellPadding=0 width=527
border=0>
<TBODY>
<TR>
<TD vAlign=top
width=540><B>第八章:使用Kjava事件处理的开发</B>
<UL>
<LI><B>介绍</B><BR>在这一章,我们将学习 KJava
事件处理,并用简单的绘图应用程序 Scribble 来示范它是如何工作的。<BR>KJava
事件处理模型不如 J2SE 的 action-listene 模型先进。通过使 Spotlet
类子类化,所有感兴趣的事件都是可访问的,无论怎样,KJava
应用程序都将完成这项工作。目前,只有 spotlet 受到了事件的关注。为了关注
spotlet,我们使用 register()。如要停止,则使用
unregister()。 <BR>注意:如果您用 WANT_SYSTEM_KEYS
注册一个 spotlet
,设备不会通过按下按钮和排队等候停止它的应用程序来自动终止这个应用程序。相反,按下按钮事件会通报这个应用程序,然后负责适当地处理事件。除非当按下按钮时您提供一种通过调用
System.exit
终止应用程序的方法,否则这个应用程序将会继续不确定地运行。唯一能终止这个应用程序的方法就只有重启该设备。<BR>KJava
支持三种基本类型事件:显示屏上笔的移动、键盘输入和电子束定向发送/接收。另外,还有一种全面的包罗万象的方法
-- unknownEvent()。在后面的章节中我们将讨论这些不同的事件类型。
</LI></UL>
<P> </P>
<UL>
<LI><B>处理笔的移动</B><BR>处理 PDA
显示器上笔的移动的事件处理程序有:penDown、penMove 和
penUp。 <BR>当用户将笔在显示器上移动时,penDown()
方法将被调用,它传递显示器上笔的放置点的 X 和 Y 轴坐标。<BR>public void
penDown( int x, int y )<BR>当用户在显示器上移动笔时
penMove() 过程将被调用。X 和 Y 轴坐标定义笔的当前位置。<BR>public
void penMove( int x, int y )<BR>当用户将笔从显示器上移开时
penUp() 过程将被调用,它传递两个参数:笔被移开点的 X 和 Y
轴坐标。<BR>public void penUp( int x, int y )
</LI></UL>
<P> </P>
<UL>
<LI><B>处理键盘输入,电子束定向发送/接收,以及未知事件</B><BR>在 J2SE
AWT 中,接口 java.awt.event.KeyListener 包含处理不同键盘事件的
keyPressed、keyReleased 和 keyTyped。与此相比,KJava
则只有一个函数,keyDown()。<BR>如果用户在可书画区写下一个字符,按下计算器或菜单图标,或者是按下任何“硬键”(缺省情况下,Date
Book、Address、page up、page down、To Do List 或是
Memo Pad key )时,事件 keyDown 就会被调用。参数 keyCode
标识用户输入的键的代码。如果按了其中一个“硬键”,事件 keyDown
就开始匹配这个类中定义过的相应常量中的一个。<BR>public void keyDown(
int keyCode )<BR>beamReceive() 方法被用于接收从红外线 Palm
设备传来的数据包。数据以一种字节数组的方式被接收,并用虚拟机自动分配这些数据。<BR>public
static boolean beamReceive( byte[] data
)beamSend() 方法不是一个事件处理程序,但是它显然与 beamReceive()
相关联,所以我们在这儿还是要提一下。这种方法被用来给发送到另一个红外线 Palm
设备的数据包定向。在给数据定向时,您可以调用这个函数,但是目标设备必须在接收数据的
spotlet 中注册一个 beamReceive 处理器。<BR>public static
boolean beamSend( byte[] data )<BR>unknownEvent
是一个常规的所有未知事件处理例程。<BR>public void unknownEvent(
int event, java.io.DataInput in ) </LI></UL>
<P> </P>
<UL>
<LI><B>Scribble
应用程序介绍</B><BR>现在我们了解了事件处理的基础,我们即将进入更为高级一些的 J2ME
开发。在本章中,我们将开发 Scribble
应用程序。我们不会逐行描述代码,但是,我们将描绘重要的代码行和每个方法的目的。您可从参考资料上访问完整的代码清单。<BR>Scribble
应用程序是一个独立的应用程序,示范使用 Sun 公司的 KJava API 开发 Palm
操作系统。Scribble 允许您在显示屏上徒手绘图,或添加想要的正规文本。
</LI></UL>
<P> </P>
<UL>
<LI><B>开始使用 Scribble</B><BR>在 HelloWorld
应用程序中,我们需要导入 Scribble 应用程序要使用的类。下面是标识被 Scribble
使用的类的文本块: <BR><BR>import
com.sun.kjava.Bitmap;<BR>import
com.sun.kjava.Button;<BR>import
com.sun.kjava.Dialog;<BR>import
com.sun.kjava.Graphics;<BR>import
com.sun.kjava.HelpDisplay;<BR>import
com.sun.kjava.Spotlet;<BR>Scribble 类扩展了 J2SE
中使用的 Spotlet 类。它从定义最终的静态类变量开始。 <BR>public
class Scribble extends Spotlet<BR>类变量 g 担当了对单独的
Graphics 对象的引用,该对象在类中始终被使用: <BR><BR>static
Graphics g = Graphics.getGraphics (); </LI></UL>
<P> </P>
<UL>
<LI><B>定义方法和事件处理程序</B><BR>此外,main()
定义了应用程序的主要入口。 <BR><BR>public static void
main(String[] args)<BR>默认的构造程序,Scribble
初始化成员变量,清屏并画出初始框架。 <BR><BR>public
Scribble()<BR>paint() 方法负责更新或刷新显示。它使用类变量 g -- 一个
Graphics 对象,类似于 Java 2 AWT 中使用的 Graphics
对象。 <BR>private void paint()<BR>penDown()
方法执行事件处理程序来处理在屏幕上放置笔的事件。它通过 X 和 Y 坐标来定位。在
Scribble 中,程序测试 Clear 或 Exit
按钮是否被按下,如果按下的话,就处理相应的事件。 <BR><BR>public
void penDown(int x, int y)<BR>keyDown() 方法处理那些在
Palm 设备的即兴书画框内随手写下的东西。传送到这个方法中的整型值 keyCode
就是输入的字符键值。在 Scribble 应用程序中,我们存储了成员变量 lastKey
中被按下的键,然后调用 paint() 方法刷新屏幕。 <BR>public void
keyDown(int keyCode)<BR>penMove()
方法处理在屏幕上拖动笔的事件。在 Scribble
中,它负责用笔绘画。 <BR><BR>public void penMove(int
x, int y)<BR>使用的最后一个方法 clearDrawingArea(),在用户按下
Clear 按钮时由 penDown 事件处理程序调用。由于它仅在 Scribble
类的内部使用,所以 clearDrawingArea()
是一个私有方法。 <BR><BR>private void
clearDrawingArea()
</LI></UL></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD>
<TD width=30><IMG height=21 src="8.files/0.gif"
width=30></TD></TR></TBODY></TABLE></TD>
<TD width=1 bgColor=#cccccc><IMG height=1 src="8.files/0.gif"
width=1></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD>
<TABLE cellSpacing=0 cellPadding=0 width=755 border=0>
<TBODY>
<TR>
<TD width=1 bgColor=#cccccc><IMG height=1 src="8.files/0.gif"
width=1></TD>
<TD width=158 bgColor=#eeeeee height=81><IMG height=1
src="8.files/0.gif" width=1></TD>
<TD width=1 bgColor=#cccccc><IMG height=1 src="8.files/0.gif"
width=1></TD>
<TD vAlign=bottom><IMG height=31 src="8.files/eng_bottom3.gif"
width=594 useMap=#Map border=0></TD>
<TD width=1 bgColor=#cccccc><IMG height=1 src="8.files/0.gif"
width=1></TD></TR></TBODY></TABLE></TD></TR>
<TR>
<TD bgColor=#666666 height=20><FONT color=#ffffff
align="center"><BR> © 北京映翰通网络技术有限公司 版权所有<BR> </FONT>
</TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE><MAP name=Map><AREA
shape=RECT coords=506,5,592,26
href="http://www.inhand.com.cn/solution/j2me/j2me_8.htm#top"></MAP></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -