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

材料仿真软件:Materials Studio_(14).电学性质计算 设置计算参数,包括 k 点网格、交换相关泛函等。 阅读详情
第七章:使用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 -- 定义了一个垂直滚动条组件。
COMSOL有限元仿真深度指南:为结构件添加预应变 一、什么是预应力和预应变? 我们知道,结构力学问题中,结构件在外载荷作用下产生变形响应以吸收外载荷做功带来的能量;而在结构内部,整体的受力和变形则是通过固体微元的应力与应变传递的。 对于线弹性材料来说,应力与应变的关系可以线性表达,也即 σ=Dεσ = Dεσ=Dε ;在该式中,无论固体微元的应变程度多大,弹性矩阵DDD都是一个不变的常值。而对于超弹性材料来说,应力与应变的关系则需要通过应变能密度函数WWW来表征(详细参加博客《COMSOL有限元仿真深度指南:超弹性模型有限元分析入门》)。 从上面我们也不难 阅读详情

相关推荐

保姆级教程:用Python+MM-Agent搭建自己的数学建模AI助手(支持GPT-4o/DeepSeek)

本文提供了一份详细的教程,教你如何使用Python和MM-Agent框架搭建数学建模AI助手,支持GPT-4o和DeepSeek-R1等LLM后端。从环境配置、HMML知识库集成到多LLM适配和建模流程实现,手把手教你构建智能建模系统,提升数学建模效率。

k6l7m8n9的博客 452

JAVA Swing图形化编程(一)文件选择器JFileChooser

这两天做一个图形化软件需要选择文件并进行文件读取,因此需要使用到JAVA Spring中的文件选择框。查阅相关资料发现FileChooser是一个不错的选择,在此记录一下使用过程和心得。 拿到一种新的java类,最先做的就是查看API文档,相关介绍如下; 首先看一下构造方法:造方法摘要 JFileChooser() 构造一个指向用户默认目录的 JFileChooser。 JFileChoo

乔阳的博客 9744

【数据集4】GSWP3数据集详解

简介GSWP3数据集

WW、forever的博客 1366

使用Kjava GUI组件的开发

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

无花的专栏 626

2ED2410-EM:12v / 24v智能模拟高侧MOSFET栅极驱动器

12v / 24v智能模拟高侧MOSFET栅极驱动器。2ED2410-EM具有输入CPP和CPN的电压比较器。该比较器可用于基于任何模拟电压触发SAFESTATE模式,甚至是外部电压2ED2410-EM。CPP为比较器的正输入,CPN为负输入。VcPREF可以通过微控制器进行调节,也可以通过板载电源芯片(如英飞凌SBC)或简单的分压器在限制VcP(REF)内进行固定,以保持稳定性。使用此比较器允许2ED2410-EM进入SAFESTATE并独立于微控制器关闭MOSFET。

让学习成为一种习惯 2188

SAP UI5 主题设置全解析:从启动参数到运行时切换、跨域白名单与事件监听

SAP UI5主题体系深度解析:从配置到切换的完整指南 摘要:SAP UI5主题机制远不止CSS换肤,其工程化实践涵盖启动配置、运行时API切换、跨库路径映射及安全管控等关键环节。通过bootstrap标签或URL参数设置初始主题,运行时可用Theming.setTheme无刷新切换。自定义主题需配置theme-roots路径,跨域加载需声明sap-allowed-theme-origins白名单。主题切换完成后会触发applied事件,适合执行视觉同步操作。该体系支持多品牌适配、集中式主题管理,在Fior

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 326

使用Kjava GUI组件开发(转)

我们开始学习如何使用 KJava API 进行 GUI 开发。首先看一下 KJava GUI 开发的介绍,然后使用 KJava API 开发我们的第一个 J2ME 应用程序。HelloWorld ,将示范一个使用 CLDC 的简...

cuankuangzhong6373的博客 179

北斗导航 | 卡尔曼滤波与因子图优化对比(附图优化matlab代码)

- 历史数据利用:因子图通过滑动窗口保留历史状态,优化时联合多帧数据;卡尔曼滤波仅依赖当前和上一帧状态 。 - 迭代优化:因子图通过多次迭代逼近最优解,卡尔曼滤波仅单次更新 。 - 误差抑制:因子图的多次线性化可有效抑制非线性误差(如GNSS伪距观测的非线性) 。

尘世冰封的专栏 1300

[转载]J2ME入门之四:使用Kjava GUI组件开发

J2ME入门之四:使用Kjava GUI组件开发我们开始学习如何使用 KJava API 进行 GUI 开发。首先看一下 KJava GUI 开发的介绍,然后使用 KJava API 开发我们的第一个 J2ME 应用程序。Hel...

congji3817的博客 168

注意力机制篇 | YOLOv8改进之在C2f模块添加EMA注意力机制(附2种改进方法)

EMA(Exponential Moving Average)注意力机制是一种用于增强模型性能的注意力机制,它通过对模型的特征图进行加权平均来提取更有用的特征信息。具体来说,EMA注意力机制通过引入一个权重因子来调整特征图中每个位置的重要性,从而使模型能够更好地关注重要的特征。🌈

小哥谈 4180

DRV8311HRRWR直流无刷(BLDC)电机驱动原理图设计

DRV8311HRRWR集成三个MOSFET 半H桥,用于驱动三相无刷直流电机(BLDC),适用于5V、9V、12V或18V直流电源轨或1S至4S电池供电应用。内部集成三个具有集成电流感测功能的电流感测放大器(CSA),可感测BLDC电机的三相电流,从而实现FOC和电流控制系统设计方案。集成保护特性:VM 欠压锁定 (UVLO)、 电荷泵欠压 (CPUV)、过流保护 (OCP)、热警告和热关断 (OTW/OTSD)、故障条件指示引脚 (nFAULT)支持 1.8V、3.3V 和 5V 逻辑输入。

zhusl6688的博客 1228

KJAVA虚拟机移植笔记-MIDP的SLAVE事件流程

KJAVA虚拟机Hack笔记-MIDP的SLAVE事件流程 转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静  KJAVA虚拟机Hack笔记-MIDP的SLAVE事件流程在SLAVE事件模型中,GUI事件由自己的主循环分发。为了把GUI事件转发给JAVA,需要做些处理才行。这里以Canv

国产开源 GUI 引擎 AWTK 1822

Python入门实战:Python生物信息学编程基础

本文旨在为生物学背景的研究人员和对生物信息学感兴趣的程序员提供一个全面的Python生物信息学编程入门指南。我们将从Python基础知识开始,逐步深入到生物信息学特定的工具和技术,最终达到能够独立开发生物信息学分析程序的水平。Python编程基础生物信息学常用数据结构和算法DNA和蛋白质序列分析基因组数据处理生物信息学数据可视化Biopython库的使用实际项目案例背景介绍:概述文章目的、范围和预期读者核心概念与联系:介绍Python和生物信息学的基本概念。

AI架构师小马 1510

用JAVA编写简单呼叫器餐厅,使用Java编写Palm OS程序的解决方案

简介现在,使用语言为 Palm OS编写程序的领域还没有完全统一,并且也有许多程度上的差异,目前,市面上有好几种不同的可用的应用程序接口,每种应用程序接口都给出了一个到当前的Palm OS应用程序不同程度的访问权限。也许这其中大家最熟悉的是Sun微系统出品的产品;但是能够为Palm OS写程序的绝不只有这一种产品。本文这一部分并不是介绍使用编写Palm程序的教程--因为每种我们将要讨论的解决方案都...

weixin_31819459的博客 383

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

java虚拟机移植_KJAVA虚拟机移植笔记-MIDP的SLAVE事件流程

KJAVA虚拟机Hack笔记-MIDP的SLAVE事件流程转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静KJAVA虚拟机Hack笔记-MIDP的SLAVE事件流程在SLAVE事件模型中,GUI事件由自己的主循环分发。为了把GUI事件转发给JAVA,需要做些处理才行。这里以Canvas的实现,介绍一下GTK+实现中的事件处理流程:o ...

weixin_32838901的博客 213

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

KJAVA虚拟机Hack笔记-MIDP HighLevel GUI概述

KJAVA虚拟机Hack笔记-MIDP HighLevel GUI概述转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 KJAVA虚拟机Hack笔记-MIDP HighLevel GUI概述MIDP 高级图形用户界面提供三种窗口,它们都从Displayable类继承过来:Alert提醒窗口。用来

国产开源 GUI 引擎 AWTK 1627

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

J2ME开发入门专题系列之二:J2ME应用程序与简表

原文地址:http://news.youkuaiyun.com/news/newstopic/23/23106.shtml在这一章中,我们将复习一下在为小型设备开发应用程序时需要牢记的一些注意事项。我们将看一下在使用 J2SE 编译 J2ME 应用程序时调用编译器的方法。最后我们将探究打包和部署,以及在这个过程中提前验证所扮演的角色。        设计开发小型设备应用程序要注意的事项:          为

585

[转载]使用Java编写Palm OS程序的解决方案

使用Java编写Palm OS程序的解决方案简介    现在,使用Java语言为 Palm OS编写程序的领域还没有完全统一,并且也有许多程度上的差异,目前,市面上有好几种不同的可用的应用程序接口,每种应用程序接口都给出了一个到...

congji3817的博客 163

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

Java嵌入式开发讲座(第一讲)[@more@]  简介使用Java编写Palm OS程序的解决方案   现在,使用Java语言为 Palm OS编写程序的领域还没有完全统一,并且也有许多程度上的差异,目前,市面上有好几种不同的...

cuanku6549的博客 171

用JAVA编写简单呼叫器餐厅,使用Java编写Palm OS程序的解决方案之一

现在,使用Java语言为 Palm OS编写程序的领域还没有完全统一,并且也有许多程度上的差异,目前,市面上有好几种不同的可用的应用程序接口,每种应用程序接口都给出了一个到当前的Palm OS应用程序不同程度的访问权限。也许这其中大家最熟悉的是Sun微系统出品的产品;但是能够为Palm OS写程序的绝不只有这一种产品。本文这一部分并不是介绍使用Java编写Palm程序的教程--因为每种我们将要讨论...

weixin_39982017的博客 258

KJAVA虚拟机Hack笔记-实现MIDP的SLAVE事件模型

转载时请注明出处和作者联系方式文章出处:http://www.limodev.cn/blog作者联系方式:李先静 MIDP有两种事件模型,一种称为MASTER模型,在这种模型中,以虚拟机为主GUI为从,事件的主循环在虚拟机中实现。另外一种称为SLAVE,在这种模型中,以GUI为主虚拟机为从,主循环在GUI中实现,目前只有QTE使用这种方式。我想GTK+和QTE的事件处理很

国产开源 GUI 引擎 AWTK 2416

Java嵌入式开发之j2me--五

google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//<script type="text/java

java专栏 325

J2ME入门专题系列之二:应用程序与简表(转)

在此专题系列文章之一的J2ME概述中我们做了入门的概念介绍。接下来本文我们将复习一下在为小型设备开发应用程序时需要牢记的一些注意事项。我们将看一下在使用 J2SE 编译 J2ME 应用程序时调用编译器的方法。最后我们将探究打包和...

cuankuangzhong6373的博客 176
上一篇: 第六章:CLDC API
下一篇: 第八章:使用Kjava事件处理的开发
SmartJavaer
博客等级 码龄21年 13粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值