`
wuhua
  • 浏览: 2112235 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用Kjava GUI组件的开发

    博客分类:
  • J2ME
阅读更多
  • 介绍
    v$t4w6\?3 本章中,我们来学习如何使用 KJava API 进行 GUI 开发。首先看一下 KJava GUI 开发的介绍,然后使用 KJava API 开发我们的第一个 J2ME 应用程序。HelloWorld ,将示范一个使用 CLDC 的简易 J2ME 应用程序、KJava 简表以及 Palm 操作系统的 KVM。Android J2ME "S6g+b N+I|6Xe#Z
    在下一章我们继续进行 KJava GUI 开发,构建另一个应用程序并重点学习事件处理模块。

 

  • Spotlet 介绍
    "yNgP6i[c {3 KJava API 提供了一套开发 Palm 操作系统设备应用程序的类。KJava 提供了一个 Spotlet 类,com.sun.kjava.Spotlet,它和 J2SE Canvas 类在添加用于事件处理的回调方法上类似。因此,应用程序可以扩展 Spotlet 类,不使用合适的事件处理方法也可提供需要的功能。 Android J2ME /W;O/^Z;U3P
    应用程序可以创建并使用多个 spotlets 来显示不同的窗口。就像使用 J2SE Canvas(一个负责画出自身以及放置在其上的 GUI 控件的 spotlet)一样。 Android J2ME 4MEmO;R9x.g
    在我们的两个 KJava 示例中,都将使用 Spotlet 类。这两个示例中一个是很快就看到的 HelloWorld 应用程序,另一个是 Scribble 应用程序,后者将在使用 KJava 事件处理的开发这一章中构建。

 

  • KJava 应用程序 HelloWorld
    5R9hZGR T_MC"pT;{3 这个应用程序将在屏幕中央显示 "Hello World!" 和一个 Exit 按钮,按下后即终止该应用程序。HelloWorld.java 开始时使用下面的几行代码导入将在后面的 HelloWorld 类中使用的类: 
    g*h8o/p8KU({u3 Android J2ME R8P"D Q ])}
    import com.sun.kjava.Button;
    E'S&NV4E#b+Y3 import com.sun.kjava.Graphics;
    F(s_d)?3 import com.sun.kjava.Spotlet;Android J2ME 2m|,cT!v v
    下面的代码行将 HelloWorld 类定义为扩展 Spotlet: 
    nv5uY^+cq3
    $@*m0I*]!q3 public class HelloWorld extends Spotlet
    A�b&cX+D3 请记住 Spotlet 类提供用于处理事件的回调功能。在这个简单的示例中,我们只对一个事件感兴趣,即用户何时按下 Exit 按钮。下一个代码行存储对 Exit 按钮的引用: Android J2ME 6f9DhPH9}@:P�f{%nc

    qe}$I_E3 private static Button exitButton;
    v�f\ wmX'LW3 如同在 J2SE 中一样,main() 方法定义程序的主要入口点。对于 J2ME 应用程序,main 也定义了入口点。在本例中,main() 创建了一个新的 HelloWorld 类的实例,它运行我们的应用程序。 Android J2ME 2BbF4_O

    0lK5{ I}:? F4{G3 public static void main(String[] args)Android J2ME @/a(B2A2i|'y~ T
    {Android J2ME T'~5K`kb
    (new HelloWorld()).register(NO_EVENT_OPTIONS);
    s:d"eb8c@p3 }
    i"Va^*`b{c3 下一个代码块定义了构造程序。在构造程序中,我们首先创建一个 Button 并为其加上 "Exit" 标签。按钮起初是不可见的。当我们得到对图形 对象的引用后,此按钮成了一个可画的屏幕,先清屏然后在屏幕中央画出文本 "Hello World!"。最后,我们在屏幕上添加 Exit 按钮。 Android J2ME R6R-AG;m/K?s\ b

    \\Qn+r l~:{]3 public HelloWorld()
    %e@STOK3 {Android J2ME P.p!H,d []S
    // Create (initially invisible) the "Exit" buttonAndroid J2ME t?|Hd:e�~'V
    exitButton = new Button("Exit",70,145);
    +c2Re~.? @|q3
    jk*l6t7l"We3 // Get a reference to the graphics object;Android J2ME p~ w2Xq
    // i.e. the drawable screenAndroid J2ME &ZrL|9dh4B
    Graphics g = Graphics.getGraphics();Android J2ME /[(Yaf ZZC
    g.clearScreen();
    ^L _;z\|wl j&t9VW3 Android J2ME 9Dz!g`/hhMh
    // Draw the text, "Hello World!" somewhere near the center
    uSB:A}N3 g.drawString("Hello World!", 55, 45, g.PLAIN);Android J2ME dUGfB%B8g
    // Draw the "Exit" button
    !G:x u4uh�pRw�X#x3 exitButton.paint();
    Oq;VD_EOS3 }Android J2ME 0D v*Hu&_
    最后,我们定义 penDown 事件处理程序,用来简单地检查 Exit 按钮是否被按下。如果已按下,就退出应用程序。 Android J2ME E6hy^U6}^2T
    Android J2ME iM-~'lP jG
    public void penDown(int x, int y)Android J2ME T` r&[T~T
    {
    ^x5QC1wZ'p3 // If the "Exit" button was pressed, end this application
    EQ%Tx*E8o;Z3 if (exitButton.pressed(x,y))Android J2ME s-f&q.D;V2xG tM
    System.exit(0);
    W,{|L-@3 }

 

  • HelloWorld -- 完整的代码清单
    -kL8f A U3 以下便是 Palm 设备的 HelloWorld 应用程序的完整代码示例: 
    ~$H3ln:bqTY3 Android J2ME $QN2l#H9m&dX'n7V8U
    import com.sun.kjava.Button;
    w w5C:U0r%r#K(V;L~*Gk3 import com.sun.kjava.Graphics;Android J2ME (GqH/ZSx3V S
    import com.sun.kjava.Spotlet;
    )?}:H)S#a/jH0m3 Android J2ME @8E}/d5wTBj&cd3UcW
    /**Android J2ME b/G*xR1oW#T#Uz1?
    * Simple demonstration, "Hello World" program. Note that Spotlet is
    3j`F3i qp0p3 * the class that provides callbacks for event handling.Android J2ME U Kg a:eowp
    */
    D$^`i-k y-j e|ZT&B3 public class HelloWorld extends SpotletAndroid J2ME &` F.feYq6u"B0Z
    {
    rOFHL4tdnD Q3 /** Stores a reference to the "Exit" button. */Android J2ME h%Kam0sFw I0~0iw4{0p
    private static Button exitButton;Android J2ME &Vq[CbF%{S m _c(O
    /**
    &f5q0\%v,PgR3 * Main entry point for this program.Android J2ME .Jq%bYcn
    */Android J2ME 5p [spa!W!@7^-O`�w
    public static void main(String[] args)Android J2ME 0h8r @6J"_1L
    {Android J2ME i0L)w,sY| @"pw
    (new HelloWorld()).register(NO_EVENT_OPTIONS);Android J2ME &k!jIt�~'Nz�X
    }
    mo0S1u)_!KE6S3 /**Android J2ME y]gv ~\$J5o
    * Constructor: draws the screen.
    )T(L | [Cp3 */
    0rky4p ]9|3 public HelloWorld()
    V8p~sS8~#Ss3 {
    ^x3z I;c,k)?|mb-W3 // Create (initially invisible) the "Exit" buttonAndroid J2ME *Cjc9KM cV N
    exitButton = new Button("Exit",70,145);
    aQvfqE&@3
    R5T(c&F#ca\�t3 // Get a reference to the graphics object;
    f|k o4} E3 // i.e. the drawable screenAndroid J2ME Z'm!Xq |
    Graphics g = Graphics.getGraphics();Android J2ME 0HI0x R?G+Y
    g.clearScreen();Android J2ME 9H5F;Q|T!| Zy

    sZ/^ m8K[?S4V ^3 // Draw the text, "Hello World!" somewhere near the center
    %h z!s}�H5V5l7`$Y3 g.drawString("Hello World!", 55, 45, g.PLAIN);
    sh;Z|C%F3
    _#R2XS1l8sH0e6s3 // Draw the "Exit" button
    nE1iR9\3[ u9TE3 exitButton.paint();
    Spi9L a g3 }Android J2ME `OA_9D2Cm{a
    /**Android J2ME 'GQdz!p/U-d
    * Handle a pen down event.Android J2ME !B I,r6W0z\
    */Android J2ME 3B hjaU3f
    public void penDown(int x, int y)
    g9`+c8?x;Jq'gu d"dc3 {Android J2ME (ZGmwV LF
    // If the "Exit" button was pressed, end this application
    l~*r F ?(Go+gy3 if (exitButton.pressed(x,y))Android J2ME L0t2Ll zDA8g
    System.exit(0);
    !e2x"x}KgL*a3 }Android J2ME _ RD,@v9B
    }

 

  • KJava GUI 组件
    R,n3Qj)}V.a3 除 Spotlet 类之外,KJava API 还定义了一些基础 GUI 组件。下面列出了由 KJava 提供的一些更基础 GUI 组件。注意它们与 J2SE AWT 同名组件的相似性。 
    2U,r%| d~n%q"@0py3 · Button -- 定义了一个简单的 GUI 按钮。按钮可以包含文本标签如 "OK" 或 "Cancel",也可以包含位图图象。
    gV']Z ]2E;zFq3 Android J2ME .F2X9F?-Q:C
    · Checkbox -- 定义了一个 GUI 复选框组件,它可以是已选中的,也可以是未选中的。
    XA%R9@;hF:H f U3
    Q Et?vfYG?:AI3 · Dialog -- 定义了一个弹出式、模式对话框,包含标题、文本字符串和一个 "Dismiss" 按钮。Android J2ME 7r2J`fY%olb
    · Graphics -- 这个类和其 J2SE 姊妹版很类似,提供各种绘图的方法。Android J2ME e"|ar-f

    8n'Age8h2eg3 · RadioButton -- 定义了一个有两个状态的单选按钮。通常被用作一组使用 RadioGroup 对象分组的 radio 按钮的一部分,在某一时刻只能使用一个。Android J2ME 'u r(}xg%q8?%n

    } OX9h;K'a$L;AC"V3 · RadioGroup -- 代表一组单选按钮,在某一时刻只能有一个处于开着或选中状态。Android J2ME k!UZ},Y/}i
    Android J2ME .]b8V mpi.Wq
    · ScrollTextBox, SelectScrollTextBox -- 定义了一个带滚动条的文本框组件,用户可在该组件中输入多行文本。它和 J2SE TextArea AWT 组件功能相似。Android J2ME (tQd8V2Lr }$N
    Android J2ME qx_Xy$Y
    · Slider -- 定义了一个图形化滑块,使用该组件,用户可以沿着刻度尺拖动标志来选择一个值。
    /Syl5`_k8A9b)y%?3
    nB1~:q` Y3 · TextBox -- 定义了一个基本的文本框,但仅用于显示少量文本。对于大量文本,请使用 ScrollTextBox。Android J2ME c8aGv~C/I/C*C
    · TextField -- 定义了一个文本框提供给用户进行输入。与 J2SE TextField AWT 组件相似。
    3w/Vn0p \3
    h/D"HFy!r"G(M I3 · ValueSelector -- 一个接受用户输入的整型值的 GUI 组件。用户可以选择 "+" 来递增该值,也可以选择 "-" 来递减该值。

 

  • 其它的 KJava 类 Android J2ME &n^$Eg f["`$nN3I;|
    KJava 定义了一些附加的类。在早期的开发工作中很少用到它们,但是它们的用处还是很值得一提的,因为说不定今后开发时就会用到它们。 Android J2ME RkoL,`
    · Bitmap -- 表示一个黑白两色的位图图象。
    #j z;G7V#k(l(X T\3 Android J2ME O1yr!x"Eb b
    · Caret -- 仅被 TextField 使用。(API 文档指出这个类可能是 TextField 类私有的)。Android J2ME ([2`)t,hYnqt

    ^)d{2J�qi8j_3 · Database -- 给 Palm 操作系统数据库管理器提供一个接口。Android J2ME Vk(A^5W8@

    !C;x~}IWIX!z3 · DialogOwner -- 由希望显示模式对话框的类使用的接口。Android J2ME 4V"q y|G_0E
    Android J2ME 1Rx:i+g{:Y
    · HelpDisplay -- 定义了一个简单的帮助对话框。
    6_5h;MM ?U/vR a7N S3 Android J2ME #g%g&W Dw$g4D3D}
    · IntVector -- 并不是真正意义上的 GUI 组件,该类提供一个可扩展的整型矢量,很象 java .util.Vector。Android J2ME l)|!nj2cF*K
    · List -- 并不是真正意义上的 GUI 组件,它是另一个代表一列对象的帮助类,就象java.util.Vector。Android J2ME *beo^6P3Ja9~D{ E
    Android J2ME n:V5f;n'g1s WsD i
    · ScrollOwner -- ScrollTextBox 使用的类。Android J2ME Pe2T;AKw

    5d B5E/}tV3d{ IN3 · VerticalScrollBar -- 定义了一个垂直滚动条组件。
分享到:
评论

相关推荐

    基于Java GUI编程实现“21点”游戏(含文档和代码).

    通过阅读文档,我们可以了解开发者如何将游戏规则转化为代码,如何组织类和方法,以及如何利用Java GUI组件创建交互式的用户界面。 总的来说,这个项目是一个很好的学习资源,可以帮助我们掌握Java GUI编程的基本...

    KJAVA大赛DemoCode

    在IT行业中,Java语言因其跨...虽然现代移动开发更倾向于使用Android或iOS平台,但了解KJava的历史和原理可以帮助我们理解移动技术的发展历程,并且对于研究早期移动应用的开发者来说,这些示例代码仍然具有参考价值。

    四种Java Swing日历组件

    Java Swing是Java GUI(图形用户界面)开发的重要库,它提供了丰富的组件来构建桌面应用程序。在Swing中,日历组件对于处理日期选择和显示是非常有用的。以下将详细讲解四种不同的Java Swing日历组件及其应用。 1. ...

    java嵌入式开发讲座(第一讲)

    Kjava是一个基于KVM的开发工具,提供了GUI组件和事件处理机制。 ```java import com.sun.kjava.*; public class HelloKjava extends Spotlet { private static Button OKButton; public static Graphics g = ...

    J2ME应用程序开发指南[归纳].pdf

    Kjava库提供了一些额外的GUI组件,如CheckBox、RadioButton、List等,以及Spotlet类,用于处理事件和Palm OS特定的输入机制。 以下是一个简单的使用Kjava库展示文本和按钮的示例代码: ```java import ...

    基于Java开发的2048游戏源码

    总的来说,基于Java开发的2048游戏源码展示了Java在游戏开发中的强大能力,包括数据结构(如二维数组)、算法(如数组遍历和移动合并)、随机数生成以及GUI编程。通过理解并实践这个源码,开发者不仅可以提升Java...

    java 组件图,j2ee/j2se/j2me差异比较

    它提供了基础的Java类库,包括I/O、网络编程、多线程、集合框架、Swing GUI组件等,是J2EE和J2ME的基础。 J2ME(Java 2 Platform, Micro Edition)是针对嵌入式设备和移动设备的Java平台。它的目标是低内存、低性能...

    JAVAK课程设计_学生信息管理系统

    【Java学生信息管理系统...总结,这个Java学生信息管理系统项目旨在提升开发者在Java GUI编程和数据库应用方面的技能,通过实际操作,理解并应用面向对象设计原则和软件工程流程,从而为未来更复杂的系统开发奠定基础。

    j2me入门_基础篇

    KJava GUI组件开发 KJava是J2ME中的图形用户界面(GUI)开发工具,其组件如Choice、TextBox、Form等,可以帮助开发者构建丰富的交互式界面。学习如何使用这些组件并熟练掌握布局管理,是提升用户体验的关键。 ### ...

    java扑克牌游戏开发课设

    本课程设计以电脑上常见的蜘蛛纸牌游戏为蓝本,利用Java语言构建游戏的核心功能,包括纸牌的操作(移动、放置、回收、重发),并借助javax.swing包提供的图形用户界面(GUI)组件来实现友好的用户交互。 1. 系统...

    java开源包8

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包6

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包9

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    J2ME开发文档(全)

    J2ME开发通常使用KJava编译器和Sun Microsystems提供的Wireless Toolkit (WTK)或NetBeans等集成开发环境(IDE)。WTK包含了一个模拟器,使得开发者能够在没有实际设备的情况下测试应用程序。理解如何配置和使用这些...

    banqueinteractivewithlist_javaswing_plan42k_

    标题 ...javaswing_plan42k_" 是一个利用Java Swing开发的银行应用程序项目,涉及到GUI设计、事件处理、数据管理、用户交互等多个方面,对开发者来说,需要掌握扎实的Java基础和Swing API使用技巧。

    纯java编写的蜘蛛纸牌(源码+成品)---感兴趣的可以看看

    3. 事件监听:为GUI组件添加事件监听器,如ActionListener,处理用户的点击事件。 四、发布与运行 1. 打包与部署:项目完成后,使用Java的jar打包工具将源码打包成可执行的jar文件,或者使用IDE的打包功能生成可...

    KIJ-chat:聊天应用程序开发任务、使用 C 的服务器以及 GUI

    【标题】"KIJ-chat:聊天应用程序开发任务、使用 C 的服务器以及 GUI" 在这个项目中,我们关注的是构建一个聊天应用程序,它包含了客户端和服务器端的实现,主要使用C语言编写服务器部分,并且具备图形用户界面(GUI...

    java开源包5

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

Global site tag (gtag.js) - Google Analytics