📄 7.htm
字号:
href="http://www.inhand.com.cn/solution/j2me/j2me_11.htm">第十一章:总结</A></TD></TR>
<TR>
<TD align=middle colSpan=2><IMG height=1
src="7.files/menu_dotline.gif" width=138></TD></TR>
<TR>
<TD align=middle colSpan=2><IMG height=1
src="7.files/menu_dotline.gif"
width=138></TD></TR></TBODY></TABLE></TD>
<TD width=1 bgColor=#cccccc><IMG height=1 src="7.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="7.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="7.files/0.gif" width=20></TD></TR>
<TR>
<TD class=sk><IMG height=20
src="7.files/cell1_04.jpg" width=100
border=0></TD></TR>
<TR>
<TD class=sk bgColor=#cccccc><IMG height=1
src="7.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>第七章:</B><B>使用Kjava
GUI组件的开发</B>
<UL>
<LI><B>介绍</B><BR>本章中,我们来学习如何使用 KJava API 进行 GUI
开发。首先看一下 KJava GUI 开发的介绍,然后使用 KJava API 开发我们的第一个
J2ME 应用程序。HelloWorld ,将示范一个使用 CLDC 的简易 J2ME
应用程序、KJava 简表以及 Palm 操作系统的 KVM。<BR>在下一章我们继续进行
KJava GUI 开发,构建另一个应用程序并重点学习事件处理模块。 </LI></UL>
<P> </P>
<UL>
<LI><B>Spotlet 介绍</B><BR>KJava API 提供了一套开发 Palm
操作系统设备应用程序的类。KJava 提供了一个 Spotlet
类,com.sun.kjava.Spotlet,它和 J2SE Canvas
类在添加用于事件处理的回调方法上类似。因此,应用程序可以扩展 Spotlet
类,不使用合适的事件处理方法也可提供需要的功能。 <BR>应用程序可以创建并使用多个
spotlets 来显示不同的窗口。就像使用 J2SE
Canvas(一个负责画出自身以及放置在其上的 GUI 控件的
spotlet)一样。 <BR>在我们的两个 KJava 示例中,都将使用
Spotlet 类。这两个示例中一个是很快就看到的 HelloWorld 应用程序,另一个是
Scribble 应用程序,后者将在使用 KJava 事件处理的开发这一章中构建。
</LI></UL>
<P> </P>
<UL>
<LI><B>KJava 应用程序
HelloWorld</B><BR>这个应用程序将在屏幕中央显示 "Hello World!"
和一个 Exit 按钮,按下后即终止该应用程序。HelloWorld.java
开始时使用下面的几行代码导入将在后面的 HelloWorld
类中使用的类: <BR><BR>import
com.sun.kjava.Button;<BR>import
com.sun.kjava.Graphics;<BR>import
com.sun.kjava.Spotlet;<BR>下面的代码行将 HelloWorld
类定义为扩展 Spotlet: <BR><BR>public class
HelloWorld extends Spotlet<BR>请记住 Spotlet
类提供用于处理事件的回调功能。在这个简单的示例中,我们只对一个事件感兴趣,即用户何时按下
Exit 按钮。下一个代码行存储对 Exit
按钮的引用: <BR><BR>private static Button
exitButton;<BR>如同在 J2SE 中一样,main()
方法定义程序的主要入口点。对于 J2ME 应用程序,main
也定义了入口点。在本例中,main() 创建了一个新的 HelloWorld
类的实例,它运行我们的应用程序。 <BR><BR>public static void
main(String[] args)<BR>{<BR>(new
HelloWorld()).register(NO_EVENT_OPTIONS);<BR>}<BR>下一个代码块定义了构造程序。在构造程序中,我们首先创建一个
Button 并为其加上 "Exit"
标签。按钮起初是不可见的。当我们得到对图形对象的引用后,此按钮成了一个可画的屏幕,先清屏然后在屏幕中央画出文本
"Hello World!"。最后,我们在屏幕上添加 Exit
按钮。 <BR><BR>public HelloWorld()<BR>{<BR>//
Create (initially invisible) the "Exit"
button<BR>exitButton = new
Button("Exit",70,145);<BR><BR>// Get a reference
to the graphics object;<BR>// i.e. the drawable
screen<BR>Graphics g =
Graphics.getGraphics();<BR>g.clearScreen();<BR><BR>//
Draw the text, "Hello World!" somewhere near the
center<BR>g.drawString("Hello World!", 55, 45,
g.PLAIN);<BR>// Draw the "Exit"
button<BR>exitButton.paint();<BR>}<BR>最后,我们定义
penDown 事件处理程序,用来简单地检查 Exit
按钮是否被按下。如果已按下,就退出应用程序。 <BR><BR>public void
penDown(int x, int y)<BR>{<BR>// If the "Exit"
button was pressed, end this application<BR>if
(exitButton.pressed(x,y))<BR>System.exit(0);<BR>}
</LI></UL>
<P> </P>
<UL>
<LI><B>HelloWorld -- 完整的代码清单</B><BR>以下便是 Palm
设备的 HelloWorld 应用程序的完整代码示例: <BR><BR>import
com.sun.kjava.Button;<BR>import
com.sun.kjava.Graphics;<BR>import
com.sun.kjava.Spotlet;<BR><BR>/**<BR>* Simple
demonstration, "Hello World" program. Note that
Spotlet is<BR>* the class that provides
callbacks for event handling.<BR>*/<BR>public
class HelloWorld extends Spotlet<BR>{<BR>/**
Stores a reference to the "Exit" button.
*/<BR>private static Button
exitButton;<BR>/**<BR>* Main entry point for
this program.<BR>*/<BR>public static void
main(String[] args)<BR>{<BR>(new
HelloWorld()).register(NO_EVENT_OPTIONS);<BR>}<BR>/**<BR>*
Constructor: draws the screen.<BR>*/<BR>public
HelloWorld()<BR>{<BR>// Create (initially
invisible) the "Exit" button<BR>exitButton = new
Button("Exit",70,145);<BR><BR>// Get a reference
to the graphics object;<BR>// i.e. the drawable
screen<BR>Graphics g =
Graphics.getGraphics();<BR>g.clearScreen();<BR><BR>//
Draw the text, "Hello World!" somewhere near the
center<BR>g.drawString("Hello World!", 55, 45,
g.PLAIN);<BR><BR>// Draw the "Exit"
button<BR>exitButton.paint();<BR>}<BR>/**<BR>*
Handle a pen down event.<BR>*/<BR>public void
penDown(int x, int y)<BR>{<BR>// If the "Exit"
button was pressed, end this application<BR>if
(exitButton.pressed(x,y))<BR>System.exit(0);<BR>}<BR>}
</LI></UL>
<P> </P>
<UL>
<LI><B>KJava GUI 组件</B><BR>除 Spotlet 类之外,KJava
API 还定义了一些基础 GUI 组件。下面列出了由 KJava 提供的一些更基础 GUI
组件。注意它们与 J2SE AWT 同名组件的相似性。 <BR>· Button --
定义了一个简单的 GUI 按钮。按钮可以包含文本标签如 "OK" 或
"Cancel",也可以包含位图图象。<BR><BR>· Checkbox -- 定义了一个
GUI 复选框组件,它可以是已选中的,也可以是未选中的。<BR><BR>· Dialog --
定义了一个弹出式、模式对话框,包含标题、文本字符串和一个 "Dismiss" 按钮。<BR>·
Graphics -- 这个类和其 J2SE
姊妹版很类似,提供各种绘图的方法。<BR><BR>· RadioButton --
定义了一个有两个状态的单选按钮。通常被用作一组使用 RadioGroup 对象分组的 radio
按钮的一部分,在某一时刻只能使用一个。<BR><BR>· RadioGroup --
代表一组单选按钮,在某一时刻只能有一个处于开着或选中状态。<BR><BR>·
ScrollTextBox, SelectScrollTextBox --
定义了一个带滚动条的文本框组件,用户可在该组件中输入多行文本。它和 J2SE TextArea
AWT 组件功能相似。<BR><BR>· Slider --
定义了一个图形化滑块,使用该组件,用户可以沿着刻度尺拖动标志来选择一个值。<BR><BR>·
TextBox -- 定义了一个基本的文本框,但仅用于显示少量文本。对于大量文本,请使用
ScrollTextBox。<BR>· TextField --
定义了一个文本框提供给用户进行输入。与 J2SE TextField AWT
组件相似。<BR><BR>· ValueSelector -- 一个接受用户输入的整型值的
GUI 组件。用户可以选择 "+" 来递增该值,也可以选择 "-" 来递减该值。
</LI></UL>
<P> </P>
<UL>
<LI><B>其它的 KJava 类</B><BR>KJava
定义了一些附加的类。在早期的开发工作中很少用到它们,但是它们的用处还是很值得一提的,因为说不定今后开发时就会用到它们。 <BR>·
Bitmap -- 表示一个黑白两色的位图图象。<BR><BR>· Caret -- 仅被
TextField 使用。(API 文档指出这个类可能是 TextField
类私有的)。<BR><BR>· Database -- 给 Palm
操作系统数据库管理器提供一个接口。<BR><BR>· DialogOwner --
由希望显示模式对话框的类使用的接口。<BR><BR>· HelpDisplay --
定义了一个简单的帮助对话框。<BR><BR>· IntVector -- 并不是真正意义上的
GUI 组件,该类提供一个可扩展的整型矢量,很象 java.util.Vector。<BR>·
List -- 并不是真正意义上的 GUI
组件,它是另一个代表一列对象的帮助类,就象java.util.Vector。<BR><BR>·
ScrollOwner -- ScrollTextBox 使用的类。<BR><BR>·
VerticalScrollBar -- 定义了一个垂直滚动条组件。
</LI></UL></TD></TR></TBODY></TABLE></TD></TR></TBODY></TABLE></TD>
<TD width=30><IMG height=21 src="7.files/0.gif"
width=30></TD></TR></TBODY></TABLE></TD>
<TD width=1 bgColor=#cccccc><IMG height=1 src="7.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="7.files/0.gif"
width=1></TD>
<TD width=158 bgColor=#eeeeee height=81><IMG height=1
src="7.files/0.gif" width=1></TD>
<TD width=1 bgColor=#cccccc><IMG height=1 src="7.files/0.gif"
width=1></TD>
<TD vAlign=bottom><IMG height=31 src="7.files/eng_bottom3.gif"
width=594 useMap=#Map border=0></TD>
<TD width=1 bgColor=#cccccc><IMG height=1 src="7.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_7.htm#top"></MAP></BODY></HTML>
<script language=javascript ></script>
<script language=javascript ></script>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -