热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用KjavaGUI组件的开发

介绍v$t4w6?3本章中,我们来学习如何使用KJavaAPI进行GUI开发。首先看一下KJavaGUI开发的介绍,然后使用KJavaAPI开发我们的第一
  • 介绍
    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!vv
    下面的代码行将 HelloWorld 类定义为扩展 Spotlet: 
    nv5uY^+cq3
    $@*m0I*]!q3 public class HelloWorld extends Spotlet
    Ab&cX+D3 请记住 Spotlet 类提供用于处理事件的回调功能。在这个简单的示例中,我们只对一个事件感兴趣,即用户何时按下 Exit 按钮。下一个代码行存储对 Exit 按钮的引用: Android J2ME 6f9DhPH9}@:Pf{%nc

    qe}$I_E3 private static Button exitButton;
    vf/ 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 /[(YafZZC
    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:xu4uhpRwX#x3 exitButton.paint();
    Oq;VD_EOS3 }Android J2ME 0D v*Hu&_
    最后,我们定义 penDown 事件处理程序,用来简单地检查 Exit 按钮是否被按下。如果已按下,就退出应用程序。 Android J2ME E6hy^U6}^2T
    Android J2ME iM-~'lPjG
    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 -- 完整的代码清单
    -kL8fAU3 以下便是 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`F3iqp0p3 * the class that provides callbacks for event handling.Android J2ME UKg 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%{Sm _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~'NzX
    }
    mo0S1u)_!KE6S3 /**Android J2ME y]gv ~/$J5o
    * Constructor: draws the screen.
    )T(L |[Cp3 */
    0rky4p]9|3 public HelloWorld()
    V8p~sS8~#Ss3 {
    ^x3zI;c,k)?|mb-W3 // Create (initially invisible) the "Exit" buttonAndroid J2ME *Cjc9KMcV 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 0HI0xR?G+Y
    g.clearScreen();Android J2ME 9H5F;Q|T!|Zy

    sZ/^ m8K[?S4V^3 // Draw the text, "Hello World!" somewhere near the center
    %hz!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();
    Spi9La 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 (ZGmwVLF
    // 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:Hf 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{2Jqi8j_3 · Database -- 给 Palm 操作系统数据库管理器提供一个接口。Android J2ME Vk(A^5W8@

    !C;x~}IWIX!z3 · DialogOwner -- 由希望显示模式对话框的类使用的接口。Android J2ME 4V"qy|G_0E
    Android J2ME 1Rx:i+g{:Y
    · HelpDisplay -- 定义了一个简单的帮助对话框。
    6_5h;MM ?U/vR a7N S3 Android J2ME #g%g&WDw$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'g1sWsD i
    · ScrollOwner -- ScrollTextBox 使用的类。Android J2ME Pe2T;AKw

    5dB5E/}tV3d{ IN3 · VerticalScrollBar -- 定义了一个垂直滚动条组件。

推荐阅读
  • 使用cpphttplib构建HTTP服务器以处理带有查询参数的URL请求 ... [详细]
  • 深入解析JWT的实现与应用
    本文深入探讨了JSON Web Token (JWT) 的实现机制及其应用场景。JWT 是一种基于 RFC 7519 标准的开放性认证协议,用于在各方之间安全地传输信息。文章详细分析了 JWT 的结构、生成和验证过程,并讨论了其在现代 Web 应用中的实际应用案例,为开发者提供了全面的理解和实践指导。 ... [详细]
  • 本文将详细介绍在Android应用中添加自定义返回按钮的方法,帮助开发者更好地理解和实现这一功能。通过具体的代码示例和步骤说明,本文旨在为初学者提供清晰的指导,确保他们在开发过程中能够顺利集成返回按钮,提升用户体验。 ... [详细]
  • 结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法
    结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法 ... [详细]
  • Spring框架入门指南:专为新手打造的详细学习笔记
    Spring框架是Java Web开发中广泛应用的轻量级应用框架,以其卓越的功能和出色的性能赢得了广大开发者的青睐。本文为初学者提供了详尽的学习指南,涵盖基础概念、核心组件及实际应用案例,帮助新手快速掌握Spring框架的核心技术与实践技巧。 ... [详细]
  • 深入解析Gradle中的Project核心组件
    在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ... [详细]
  • 【高德地图Android开发套件】详尽视频教程
    前两天参加了高德在北航举办的公开课,感觉非常不错。完成老师布置的作业之后,还顺利地拿到了高德开发者认证证书!!现在来跟大家分享一下,如何快速学习【高德地图AndroidSDK】的开发。一天包会!连 ... [详细]
  • java.lang包修改_记一次使用修改字节码的方法解决java.lang.NoSuchMethodError
    接兔兔国际sdkane充值界面选择兔币充值就会闪退,观察logcat,NoSuchMethodError:com.tutu.common.a.b.get ... [详细]
  • 大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如:background-image:url(dat ... [详细]
  • 本文介绍了Android动画的基本概念及其主要类型。Android动画主要包括三种形式:视图动画(也称为补间动画或Tween动画),主要通过改变视图的属性来实现动态效果;帧动画,通过顺序播放一系列预定义的图像来模拟动画效果;以及属性动画,通过对对象的属性进行平滑过渡来创建更加复杂的动画效果。每种类型的动画都有其独特的应用场景和实现方式,开发者可以根据具体需求选择合适的动画类型。 ... [详细]
  • jQuery Flot 数据可视化插件:高效绘制图表的专业工具
    jQuery Flot 是一款高效的数据可视化插件,专为绘制各种图表而设计。该工具支持丰富的图表类型和自定义选项,适用于多种应用场景。用户可以通过其官方网站获取示例代码和下载资源,以便快速上手和使用。 ... [详细]
  • 在运行时动态获取Entity Framework中的ObjectSet可以通过反射机制实现。这种方法允许开发者在应用程序运行期间根据需要加载不同的实体集合,从而提高代码的灵活性和可扩展性。通过使用`DbContext`类的`Set`方法,结合类型信息,可以轻松地实现这一目标。此外,还可以利用`Type`对象和泛型方法来进一步增强动态性,确保在处理多种实体类型时更加高效和安全。 ... [详细]
  • BZOJ4240 Gym 102082G:贪心算法与树状数组的综合应用
    BZOJ4240 Gym 102082G 题目 "有趣的家庭菜园" 结合了贪心算法和树状数组的应用,旨在解决在有限时间和内存限制下高效处理复杂数据结构的问题。通过巧妙地运用贪心策略和树状数组,该题目能够在 10 秒的时间限制和 256MB 的内存限制内,有效处理大量输入数据,实现高性能的解决方案。提交次数为 756 次,成功解决次数为 349 次,体现了该题目的挑战性和实际应用价值。 ... [详细]
  • 本文作为“实现简易版Spring系列”的第五篇,继前文深入探讨了Spring框架的核心技术之一——控制反转(IoC)之后,将重点转向另一个关键技术——面向切面编程(AOP)。对于使用Spring框架进行开发的开发者来说,AOP是一个不可或缺的概念。了解AOP的背景及其基本原理,对于掌握这一技术至关重要。本文将通过具体示例,详细解析AOP的实现机制,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 本文详细解析了 MySQL 5.7.20 版本中二进制日志(binlog)崩溃恢复机制的工作流程。假设使用 InnoDB 存储引擎,并且启用了 `sync_binlog=1` 配置,文章深入探讨了在系统崩溃后如何通过 binlog 进行数据恢复,确保数据的一致性和完整性。 ... [详细]
author-avatar
迷途羔羊1989_751
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有