第八章:使用Kjava事件处理的开发

科技中介服务机构如何高效完成技术成果的筛选与匹配服务?.docx 科技中介服务机构如何高效完成技术成果的筛选与匹配服务? 立即下载
第八章:使用Kjava事件处理的开发
介绍

在这一章,我们将学习 KJava 事件处理,并用简单的绘图应用程序 Scribble 来示范它是如何工作的。

KJava 事件处理模型不如 J2SE 的 action-listene 模型先进。通过使 Spotlet 类子类化,所有感兴趣的事件都是可访问的,无论怎样,KJava 应用程序都将完成这项工作。目前,只有 spotlet 受到了事件的关注。为了关注 spotlet,我们使用 register()。如要停止,则使用 unregister()。

注意:如果您用 WANT_SYSTEM_KEYS 注册一个 spotlet ,设备不会通过按下按钮和排队等候停止它的应用程序来自动终止这个应用程序。相反,按下按钮事件会通报这个应用程序,然后负责适当地处理事件。除非当按下按钮时您提供一种通过调用 System.exit 终止应用程序的方法,否则这个应用程序将会继续不确定地运行。唯一能终止这个应用程序的方法就只有重启该设备。

KJava 支持三种基本类型事件:显示屏上笔的移动、键盘输入和电子束定向发送/接收。另外,还有一种全面的包罗万象的方法 -- unknownEvent()。在后面的章节中我们将讨论这些不同的事件类型。

处理笔的移动

处理 PDA 显示器上笔的移动的事件处理程序有:penDown、penMove 和 penUp。

当用户将笔在显示器上移动时,penDown() 方法将被调用,它传递显示器上笔的放置点的 X 和 Y 轴坐标。

public void penDown( int x, int y )

当用户在显示器上移动笔时 penMove() 过程将被调用。X 和 Y 轴坐标定义笔的当前位置。

public void penMove( int x, int y )

当用户将笔从显示器上移开时 penUp() 过程将被调用,它传递两个参数:笔被移开点的 X 和 Y 轴坐标。

public void penUp( int x, int y )
处理键盘输入,电子束定向发送/接收,以及未知事件

在 J2SE AWT 中,接口 java.awt.event.KeyListener 包含处理不同键盘事件的 keyPressed、keyReleased 和 keyTyped。与此相比,KJava 则只有一个函数,keyDown()。

如果用户在可书画区写下一个字符,按下计算器或菜单图标,或者是按下任何“硬键”(缺省情况下,Date Book、Address、page up、page down、To Do List 或是 Memo Pad key )时,事件 keyDown 就会被调用。参数 keyCode 标识用户输入的键的代码。如果按了其中一个“硬键”,事件 keyDown 就开始匹配这个类中定义过的相应常量中的一个。

public void keyDown( int keyCode )

beamReceive() 方法被用于接收从红外线 Palm 设备传来的数据包。数据以一种字节数组的方式被接收,并用虚拟机自动分配这些数据。

public static boolean beamReceive( byte[] data )beamSend() 方法不是一个事件处理程序,但是它显然与 beamReceive() 相关联,所以我们在这儿还是要提一下。这种方法被用来给发送到另一个红外线 Palm 设备的数据包定向。在给数据定向时,您可以调用这个函数,但是目标设备必须在接收数据的 spotlet 中注册一个 beamReceive 处理器。

public static boolean beamSend( byte[] data )

unknownEvent 是一个常规的所有未知事件处理例程。

public void unknownEvent( int event, java.io.DataInput in )
Scribble 应用程序介绍

现在我们了解了事件处理的基础,我们即将进入更为高级一些的 J2ME 开发。在本章中,我们将开发 Scribble 应用程序。我们不会逐行描述代码,但是,我们将描绘重要的代码行和每个方法的目的。您可从参考资料上访问完整的代码清单。

Scribble 应用程序是一个独立的应用程序,示范使用 Sun 公司的 KJava API 开发 Palm 操作系统。Scribble 允许您在显示屏上徒手绘图,或添加想要的正规文本。
开始使用 Scribble

在 HelloWorld 应用程序中,我们需要导入 Scribble 应用程序要使用的类。下面是标识被 Scribble 使用的类的文本块:

import com.sun.kjava.Bitmap;
import com.sun.kjava.Button;
import com.sun.kjava.Dialog;
import com.sun.kjava.Graphics;
import com.sun.kjava.HelpDisplay;
import com.sun.kjava.Spotlet;

Scribble 类扩展了 J2SE 中使用的 Spotlet 类。它从定义最终的静态类变量开始。

public class Scribble extends Spotlet

类变量 g 担当了对单独的 Graphics 对象的引用,该对象在类中始终被使用:
static Graphics g = Graphics.getGraphics ();
定义方法和事件处理程序

此外,main() 定义了应用程序的主要入口。
public static void main(String[] args)

默认的构造程序,Scribble 初始化成员变量,清屏并画出初始框架。

public Scribble()

paint() 方法负责更新或刷新显示。它使用类变量 g -- 一个 Graphics 对象,类似于 Java 2 AWT 中使用的 Graphics 对象。

private void paint()

penDown() 方法执行事件处理程序来处理在屏幕上放置笔的事件。它通过 X 和 Y 坐标来定位。在 Scribble 中,程序测试 Clear 或 Exit 按钮是否被按下,如果按下的话,就处理相应的事件。

public void penDown(int x, int y)

keyDown() 方法处理那些在 Palm 设备的即兴书画框内随手写下的东西。传送到这个方法中的整型值 keyCode 就是输入的字符键值。在 Scribble 应用程序中,我们存储了成员变量 lastKey 中被按下的键,然后调用 paint() 方法刷新屏幕。

public void keyDown(int keyCode)

penMove() 方法处理在屏幕上拖动笔的事件。在 Scribble 中,它负责用笔绘画。

public void penMove(int x, int y)

使用的最后一个方法 clearDrawingArea(),在用户按下 Clear 按钮时由 penDown 事件处理程序调用。由于它仅在 Scribble 类的内部使用,所以 clearDrawingArea() 是一个私有方法。
private void clearDrawingArea() 
 
coppeliasim+gym+sac机械臂到位实验 urdf文件 立即下载

相关推荐

产业园区如何通过数智工具精准识别企业技术需求,提高服务匹配效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

java事件处理

一、Java的事件处理机制二、事件处理流程1、给事件源对象注册监听者    事件监听者是在事件发生时要对事件进行处理的对象。AWT定义了各种类型的事件,每一种事件有相应的事件监听者接口 ,在接口中描述了处理相应事件应该实现的基本行为。若事件类名为XxxEvent,则事件监听接口的命名为XxxListener,给部件注册监听者的方法为addXxxListener(XxxListener a)。   ...

鹏鹏的博客 2万+

产业园区运营负责人怎样利用数智工具提升企业技术需求对接效率?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

java中的事件监听

java中的事件监听:当鼠标单击时,java会产生一个mouseClicked事件。当鼠标按下某一个按钮时,java会产生一个Action动作事件。一个事件代表的是一种特定的情况,鼠标的按下,松开,单击,双击,进入某一区域,按下按钮,按下键盘按键等等,都是事件。当出现这些事件发生的时候,必须有某种东西去获取它们,否则你的程序是无法知道的。就像电脑没有连上网,是不能接受来自互联网的信息的。就像某人...

223

搜素引擎+p2p+电脑全域搜素+快速检索文件

快速搜索电脑内一切文件,反应超快

三相电压型PWM整流器PI双闭环控制Matlab仿真

内容概要:本文系统介绍了三相电压型PWM整流器的PI双闭环控制系统在Matlab/Simulink环境下的建模与仿真方法,重点阐述电压外环与电流内环的协同控制机制,通过PI调节器实现直流侧电压稳定控制及交流侧单位功率因数运行。内容涵盖电压定向控制(VOC)、空间矢量PWM(SVPWM)调制策略、电网不平衡条件下的功率平衡控制等关键技术,并延伸至维也纳(Vienna)整流器、中点电压平衡、滞环电流控制等多种先进拓扑与控制方法。配套提供Mathcad计算书,支持不同功率等级下的参数设计、闭环建模与工程化实现,形成从理论分析到仿真验证的完整技术链条,适用于电力电子系统科研与教学实践。; 适合人群:电气工程、电力电子及相关专业的研究生、科研人员,以及具备Matlab/Simulink仿真基础的工程技术人员。; 使用场景及目标:① 掌握三相PWM整流器双闭环PI控制系统的建模、仿真与动态性能分析;② 深入理解电压定向控制、SVPWM调制及电网不平衡工况下的先进控制策略;③ 利用Mathcad计算工具完成实际工程中整流器的参数设计与优化。; 阅读建议:建议结合Simulink仿真模型与Mathcad计算书同步学习,重点关注控制架构搭建、PI参数整定方法、系统稳定性分析及不同工况下的仿真验证,通过反复调试提升对控制性能的理解与工程应用能力。

java的事件机制之程序员的一天

1.介绍 java事件机制包括三个部分:事件、事件监听器、事件源。 下面我们通过一个例子来学习,比如程序员的工作,可怜的程序员会受到各方的任务,一会项目经理让去会议室开会,一会测试人眼提出一个新bug要修复,一会呢项目组长又给分配新的开发任务,等等,忙的焦头烂额。。。 2.事件 一般继承自java.util.EventObject类,封装了事件源对象及跟事件相关的信息。package com

不忘初心的博客 2042

【扩展卡尔曼滤波器EKF】基于UWB雷达的SLAM能够在室内环境内映射自然点地标,并改善机器人定位(Matlab代码实现)

内容概要:本文档详细介绍了基于Plecs软件构建的全桥LLC谐振变换器仿真模型,重点涵盖其在电力电子变换系统中的应用与研究价值。该模型用于深入分析LLC谐振变换器的核心工作特性,包括软开关技术的实现、谐振参数的精确设计以及变频控制策略的优化,旨在提升变换器的转换效率与系统稳定性。文档强调该仿真平台不仅支持独立建模,还可与Simulink等工具联合仿真,便于实现闭环控制算法的设计与验证,适用于高频高效电源系统的研发与教学实践。; 适合人群:面向具备电力电子、自动化或电气工程等相关专业背景,从事电源系统设计、变换器仿真研究工作的研发人员,以及研究生及以上学历的高校师生。; 使用场景及目标:①用于全桥LLC谐振变换器的拓扑结构验证与关键参数优化设计;②支持软开关特性分析、变频控制策略研究及系统效率提升;③作为高校电力电子课程设计、毕业设计或科研项目的仿真教学与研究平台; 阅读建议:建议使用者熟练掌握LLC谐振变换器的基本电路拓扑与工作原理,结合配套的设计报告与计算书开展仿真操作,重点关注谐振腔参数匹配、开关频率调节与控制策略对系统动态响应及效率的影响,以实现最佳的学习与研究成效。

java 事件驱动架构实例_Java开发中的事件驱动模型实例详解

下载本文示例代码或许每个软件从业者都有从学习控制台应用程序到学习可视化编程的转变过程,控制台应用程序的优点在于可以方便的练习某个语言的语法和开发习惯(如.net和java),而可视化编程的学习又可以非常方便开发出各类人机对话界面(HMI)。可视化编程或许是一个初学者开始对软件感兴趣的开始,也可能是一个软件学习的里程碑点,因为我们可以使用各类软件集成开发环境(IDE)方便的在现成的界面窗口上拖放各类...

weixin_39875031的博客 341

三相充电桩维也纳PFC+三电平LLC谐振变换器三电平PSIM仿真设计(Simulink仿真实现)

内容概要:本文档系统性地整合了电力电子与电力系统领域的MATLAB/Simulink仿真资源,聚焦于三相充电桩中的关键变换器技术,重点涵盖维也纳PFC(Vienna Rectifier)与三电平LLC谐振变换器的建模与仿真,采用双闭环PWM控制、SVPWM调制、中点电压平衡控制等核心技术。同时包含图腾柱PFC、交错并联结构、电网不平衡下的功率平衡控制、双有源桥DAB变换器优化控制等多种先进拓扑与控制策略的仿真实现,其中多项成果复现自顶级EI期刊。资源体系进一步拓展至微电网调度、状态估计(如卡尔曼滤波、EKF、UKF、PF)、智能优化算法(如多目标粒子群、秃鹰算法)及机器学习预测(如CNN-LSTM)等多个前沿交叉方向,配套提供仿真模型、算法代码、设计PPT与参考文献,构建了一个完整且高水准的科研仿真知识体系。; 适合人群:电气工程、自动化、新能源等相关专业的研究生、科研人员及从事电力电子与电力系统仿真的工程师,要求具备扎实的电路理论基础和熟练的MATLAB/Simulink仿真能力; 使用场景及目标:①深入研究三相功率因数校正、高效DC-DC变换器的建模与控制机理;②高质量复现学术论文中的先进控制策略,支撑高水平论文撰写与课题攻关;③服务于硕士/博士毕业设计、科研项目申报及工程化原型开发; 阅读建议:建议严格按照资源目录的逻辑顺序循序渐进地学习,优先掌握基础变换器拓扑与经典控制方法,再逐步过渡到高级优化策略与多学科交叉应用,结合所提供的代码、PPT讲解与参考文献进行仿真调试与二次开发,以充分挖掘资源潜力,实现科研能力的实质性提升。

批量 MAX 模型材质转换与多格式导出 对应脚本:批量导出物体转换材质有相同 - glb.ms 一、插件用途 批量读取指定文件夹中的 .max 场景文件,将识别到的多种材质简化为 Standar

批量 MAX 模型材质转换与多格式导出 对应脚本:批量导出物体转换材质有相同 - glb.ms 一、插件用途 批量读取指定文件夹中的 .max 场景文件,将识别到的多种材质简化为 StandardMaterial,然后把每个场景整体导出为指定格式,适合批量模型交付、格式转换和资产整理。 二、支持的导出格式 - FBX(默认格式) - OBJ - SKP - 3DS - OSGB - DAE - GLB - GLTF - STL 具体格式能否成功导出,还取决于当前 3ds Max 是否安装并加载对应导出器。 三、主要功能 1. 选择 MAX 文件夹:指定需要批量处理的 .max 文件目录。 2. 选择输出文件夹:可选;不指定时,每个导出文件放在对应 MAX 源文件所在目录。 3. 选择导出格式:从界面下拉列表中选择格式。 4. 开始:逐个加载扫描到的 MAX 文件,处理场景材质后导出整个场景,而不是只导出当前选择。 5. 文件重名处理:目标文件已存在时,自动尝试追加 _1、_2 等编号,避免直接覆盖同名文件。 四、材质转换方式 - 脚本会识别部分 VRay、Physical、Corona、GLTF、Standard、Autodesk 等材质类型。 - 转换目标为 StandardMaterial。 - 如果材质中能找到贴图文件,优先使用枚举到的第一张贴图作为漫反射贴图。 - 没有找到贴图时,尝试使用原材质的漫反射色、基础颜色或视口颜色等作为标准材质颜色。 - Multi/Sub 材质会逐个处理子材质。 该过程是面向通用导出的材质简化,不会完整保留原渲染器的所有材质层、反射、折射、凹凸和程序贴图网络。 五、GLB / GLTF 额外要求 - GLB 和

java 事件中心开发

## 核心: 一个生产者、一个消费者 发布订阅模式 1.事件id 2.事件内容 ## 方式 - 注解式 @Send("test-keyid") @Consumer("test-keyid") - 代码式 事件发布: eventPublish.publish(user, "test-keyid"); ## 思路 发送事件又分为同步发送和异步发送 - 同步 1. 项目启动的时候,扫描@Consumer注解,找到所有的消费者bean,然后注入的spring容器,bean id 为: “常量”...

hello 695

别光看原理图了!手把手教你用Altium Designer搞定STM32F411最小系统的PCB布局(附电源/晶振/复位电路实战)

本文详细介绍了使用Altium Designer进行STM32F411最小系统PCB布局的实战技巧,涵盖电源分配网络优化、高速信号布线及系统级布局策略。通过规范的工程结构建立、关键设计规则预设和核心电路模块布局,帮助工程师提升PCB设计效率与信号完整性。特别针对STM32最小系统的电源、晶振和复位电路提供了专业解决方案。

weixin_42653691的博客 167

Java —— 事件处理机制

一、Java事件主要角色 Source:事件源,即触发事件的对象; EventObject:事件对象,即带有 EventSource 信息的事件对象,是对EventSource的包装; Eventlistener:事件监听器,对该事件的处理。 说明: 1、Source:即任何具有行为的Java 对象,具有行为是为了能触发事件。 2、EventObject类: 继承关系:直接继承于Ob

永远的北极光 3万+

Unity采样器过多导致URP默认的Lit.Shader报错(shader error in ‘universal render pipeline/lit’: maximum ps_4_0 samp)

Shader中多个Sample Texture2D,Sample Texture3D或者类似节点的使用,该类节点都需要一个采样器,如果Shader使用超过了16个纹理采样器,如多个Base Color,Normal Map等,就容易超出。是因为每种Shader Model和GPU都有一个对纹理采样器数量的限制,是因为每个采样器都需要在显卡占用一个独立的寄存器,而寄存器的数量是有限的,当超过限制,显卡无法分配更多的寄存器给新的采样器,因此会导致编译错误。2.什么原因导致纹理采样器超出16个?

qq_41884036的博客 4233

【AI编程】用AI开发STM32软件(1):环境配置+AI编写LED闪烁

现在AI编程这么火,不拿来开发嵌软也太可惜了。笔者最近刚好有个2学分的实践课,要自己做项目,这不,机会就来了。笔者特意记录下来其过程,以供大家学习和参考。使用:VSCode+Copilot+EIDE+STM32CubeMX,单片机用最经典的stm32f103c8t6+STLink。

qq_23220445的博客 4570

我的世界java版正版装mod,吊打面试官

拼多多(三面) 面试前 面完蚂蚁后,早就听闻拼多多这个独角兽,决定也去面一把。首先我在脉脉找了一个拼多多的HR,加了微信聊了下,发了简历便开始我的拼多多面试之旅。这里要非常感谢拼多多HR小姐姐,从面试内推到offer确认一直都在帮我,人真的很nice。 拼多多:一面 为啥蚂蚁只待了三个月?没转正? Java中的HashMap、TreeMap解释下? TreeMap查询写入的时间复杂度多少? HashMap多线程有什么问题? CAS和synchronize有什么区别?都用synchronize不行么? 如

m0_56169789的博客 611

Versal - 从零构建Petalinux 2024.2 AI边缘计算平台(VD100+SDT+JupyterLab实战)

本文详细介绍了如何从零开始,基于AMD Versal VD100开发板和Petalinux 2024.2构建AI边缘计算平台。内容涵盖开发环境搭建、Petalinux工程创建与配置、SDT新流程实战、启动SD卡制作,并最终集成JupyterLab与Conda,打造出开箱即用的交互式AI开发环境,帮助开发者快速进行算法验证与部署。

5f4d3s2a1q的博客 487
上一篇: 第七章:使用Kjava GUI组件的开发
下一篇: 第九章:MIDP API
SmartJavaer
博客等级 码龄21年 13粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值