`
zendj
  • 浏览: 122083 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

第七章:使用Kjava GUI组件的开发

阅读更多
第七章:使用Kjava GUI组件的开发

介绍

本章中,我们来学习如何使用 KJava API 进行 GUI 开发。首先看一下 KJava GUI 开发的介绍,然后使用 KJava API 开发我们的第一个 J2ME 应用程序。HelloWorld ,将示范一个使用 CLDC 的简易 J2ME 应用程序、KJava 简表以及 Palm 操作系统的 KVM。

在下一章我们继续进行 KJava GUI 开发,构建另一个应用程序并重点学习事件处理模块。

Spotlet 介绍

KJava API 提供了一套开发 Palm 操作系统设备应用程序的类。KJava 提供了一个 Spotlet 类,com.sun.kjava.Spotlet,它和 J2SE Canvas 类在添加用于事件处理的回调方法上类似。因此,应用程序可以扩展 Spotlet 类,不使用合适的事件处理方法也可提供需要的功能。

应用程序可以创建并使用多个 spotlets 来显示不同的窗口。就像使用 J2SE Canvas(一个负责画出自身以及放置在其上的 GUI 控件的 spotlet)一样。

在我们的两个 KJava 示例中,都将使用 Spotlet 类。这两个示例中一个是很快就看到的 HelloWorld 应用程序,另一个是 Scribble 应用程序,后者将在使用 KJava 事件处理的开发这一章中构建。

KJava 应用程序 HelloWorld

这个应用程序将在屏幕中央显示 "Hello World!" 和一个 Exit 按钮,按下后即终止该应用程序。HelloWorld.java 开始时使用下面的几行代码导入将在后面的 HelloWorld 类中使用的类:

import com.sun.kjava.Button;
import com.sun.kjava.Graphics;
import com.sun.kjava.Spotlet;

下面的代码行将 HelloWorld 类定义为扩展 Spotlet:

public class HelloWorld extends Spotlet

请记住 Spotlet 类提供用于处理事件的回调功能。在这个简单的示例中,我们只对一个事件感兴趣,即用户何时按下 Exit 按钮。下一个代码行存储对 Exit 按钮的引用:

private static Button exitButton;

如同在 J2SE 中一样,main() 方法定义程序的主要入口点。对于 J2ME 应用程序,main 也定义了入口点。在本例中,main() 创建了一个新的 HelloWorld 类的实例,它运行我们的应用程序。

public static void main(String[] args)
{
(new HelloWorld()).register(NO_EVENT_OPTIONS);
}

下一个代码块定义了构造程序。在构造程序中,我们首先创建一个 Button 并为其加上 "Exit" 标签。按钮起初是不可见的。当我们得到对图形对象的引用后,此按钮成了一个可画的屏幕,先清屏然后在屏幕中央画出文本 "Hello World!"。最后,我们在屏幕上添加 Exit 按钮。
public HelloWorld()
{
// Create (initially invisible) the "Exit" button
exitButton = new Button("Exit",70,145);
// Get a reference to the graphics object;
// i.e. the drawable screen
Graphics g = Graphics.getGraphics();
g.clearScreen();
// Draw the text, "Hello World!" somewhere near the center
g.drawString("Hello World!", 55, 45, g.PLAIN);
// Draw the "Exit" button
exitButton.paint();
}

最后,我们定义 penDown 事件处理程序,用来简单地检查 Exit 按钮是否被按下。如果已按下,就退出应用程序。

public void penDown(int x, int y)
{
// If the "Exit" button was pressed, end this application
if (exitButton.pressed(x,y))
System.exit(0);
}


HelloWorld -- 完整的代码清单
以下便是 Palm 设备的 HelloWorld 应用程序的完整代码示例:

import com.sun.kjava.Button;
import com.sun.kjava.Graphics;
import com.sun.kjava.Spotlet;



/**
* Simple demonstration, "Hello World" program. Note that Spotlet is
* the class that provides callbacks for event handling.
*/

public class HelloWorld extends Spotlet
{
/** Stores a reference to the "Exit" button. */
private static Button exitButton;
/**
* Main entry point for this program.
*/

public static void main(String[] args)
{
(new HelloWorld()).register(NO_EVENT_OPTIONS);
}

/**
* Constructor: draws the screen.
*/
public HelloWorld()
{
// Create (initially invisible) the "Exit" button
exitButton = new Button("Exit",70,145);
// Get a reference to the graphics object;
// i.e. the drawable screen
Graphics g = Graphics.getGraphics();
g.clearScreen();
// Draw the text, "Hello World!" somewhere near the center
g.drawString("Hello World!", 55, 45, g.PLAIN);
// Draw the "Exit" button
exitButton.paint();
}

/**
* Handle a pen down event.
*/
public void penDown(int x, int y)
{
// If the "Exit" button was pressed, end this application
if (exitButton.pressed(x,y))
System.exit(0);
}
}

KJava GUI 组件

除 Spotlet 类之外,KJava API 还定义了一些基础 GUI 组件。下面列出了由 KJava 提供的一些更基础 GUI 组件。注意它们与 J2SE AWT 同名组件的相似性。
? Button -- 定义了一个简单的 GUI 按钮。按钮可以包含文本标签如 "OK" 或 "Cancel",也可以包含位图图象。
? Checkbox -- 定义了一个 GUI 复选框组件,它可以是已选中的,也可以是未选中的。
? Dialog -- 定义了一个弹出式、模式对话框,包含标题、文本字符串和一个 "Dismiss" 按钮。
? Graphics -- 这个类和其 J2SE 姊妹版很类似,提供各种绘图的方法。
? RadioButton -- 定义了一个有两个状态的单选按钮。通常被用作一组使用 RadioGroup 对象分组的 radio 按钮的一部分,在某一时刻只能使用一个。
? RadioGroup -- 代表一组单选按钮,在某一时刻只能有一个处于开着或选中状态。
? ScrollTextBox, SelectScrollTextBox -- 定义了一个带滚动条的文本框组件,用户可在该组件中输入多行文本。它和 J2SE TextArea AWT 组件功能相似。
? Slider -- 定义了一个图形化滑块,使用该组件,用户可以沿着刻度尺拖动标志来选择一个值。
? TextBox -- 定义了一个基本的文本框,但仅用于显示少量文本。对于大量文本,请使用 ScrollTextBox。
? TextField -- 定义了一个文本框提供给用户进行输入。与 J2SE TextField AWT 组件相似。
? valueSelector -- 一个接受用户输入的整型值的 GUI 组件。用户可以选择 "+" 来递增该值,也可以选择 "-" 来递减该值。

其它的 KJava 类

KJava 定义了一些附加的类。在早期的开发工作中很少用到它们,但是它们的用处还是很值得一提的,因为说不定今后开发时就会用到它们。

? Bitmap -- 表示一个黑白两色的位图图象。
? Caret -- 仅被 TextField 使用。(API 文档指出这个类可能是 TextField 类私有的)。
? Database -- 给 Palm 操作系统数据库管理器提供一个接口。
? DialogOwner -- 由希望显示模式对话框的类使用的接口。
? HelpDisplay -- 定义了一个简单的帮助对话框。
? IntVector -- 并不是真正意义上的 GUI 组件,该类提供一个可扩展的整型矢量,很象 java.util.Vector。
? List -- 并不是真正意义上的 GUI 组件,它是另一个代表一列对象的帮助类,就象java.util.Vector。
? ScrollOwner -- ScrollTextBox 使用的类。
? VerticalScrollBar -- 定义了一个垂直滚动条组件。
分享到:
评论

相关推荐

    JAVA语言程序设计PPT

    6. **第7章**未提供具体主题,可能涵盖更高级的Java特性,如异常处理、集合框架、IO流或多线程等。 7. **第9章 Java网络**:讲解Java的网络编程,包括Socket通信、URL连接、HTTP协议的使用,以及如何处理网络数据流...

    java面试题大全(英文版).doc

    《Java/J2EE面试题大全》是一本专为准备Java和J2EE职位面试者编写的指南,由K. Arulkumaran和A. Sivayini撰写,并由多位技术审阅者协助完成。这本书旨在帮助读者掌握Java和J2EE的核心概念以及关键领域,以提高面试...

    banqueinteractivewithlist_javaswing_plan42k_

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

    2021春java程序语言设计华师在线作业分享.pdf

    这些题目涉及到Java编程语言的基础知识,包括类和对象、向量、程序生命周期、变量命名规则、Java开发流程、常量和变量定义、Java应用平台、GUI组件以及布局管理器。以下是这些知识点的详细解释: 1. **向量类...

    java开源包8

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

    《面向对象程序设计JAVA语言程序设计》期末考试试题及部分答案.doc

    13. 容器:在Java GUI编程中,容器是能够包含其他组件的组件,如Dialog、Frame和Panel,但List本身也是组件,而不是容器。 14. 异常处理:Java使用try-catch-finally语句处理异常,异常可以在任何方法中被捕获并...

    java开源包6

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

    java开源包9

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

    java开源包5

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

    java开源包4

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

    java开源包101

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

    java开源包10

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

    基于Java的WAP浏览器 j2wap.zip

    2. **KJava** 或 **J2ME CLDC/MIDP**:KJava是诺基亚为Java ME开发的一个虚拟机,而CLDC(Connected Limited Device Configuration)和MIDP(Mobile Information Device Profile)是Java ME的一部分,定义了运行环境...

    java开源包3

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

    java开源包1

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

    java开源包7

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

    JAVA中文API

    10. **Swing和AWT**: 这是Java的图形用户界面(GUI)工具包,包括JButton、JLabel、JFrame等组件,用于创建桌面应用程序。 11. **国际化与本地化**: ResourceBundle和Locale类支持应用程序在不同语言和文化环境下的...

    Java资源包01

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

    Java 嵌入式班

    虽然现代 Web 开发很少使用 Applet,但在 Java 学习和发展早期阶段,它是非常重要的。 ### 16. 变量名称 **合法变量名称**: Java 中的变量名称不能以数字开头,不能是关键字,但可以包含字母、数字和下划线。因此...

    java开源包2

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

Global site tag (gtag.js) - Google Analytics