首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
byte
buffer
utf-8
header
hashset
actionscrip
php
grid
instance
netty
web3
express
subset
uri
callback
email
vbscript
schema
range
text
datetime
emoji
usb
post
golang
timezone
tree
input
timestamp
regex
process
spring
md5
iostream
javascript
js
version
数组
php8
require
bit
httprequest
audio
install
rsa
solr
typescript
php7
substring
split
dagger
vba
expression
select
eval
shell
httpclient
keyword
jsp
copy
client
string
flutter
merge
stream
dockerfile
filter
settings
function
join
blob
request
search
plugins
case
int
python
triggers
python3
当前位置:
开发笔记
>
编程语言
> 正文
使用KjavaGUI组件的开发
作者:迷途羔羊1989_751 | 来源:互联网 | 2023-05-16 09:23
介绍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" button
Android 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 screen
Android 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 Spotlet
Android 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" button
Android 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 screen
Android 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 -- 定义了一个垂直滚动条组件。
android
button
java
api
扩展
import
static
main
string
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
text
使用cpphttplib构建HTTP服务器以处理带有查询参数的URL请求
使用cpphttplib构建HTTP服务器以处理带有查询参数的URL请求 ...
[详细]
蜡笔小新 2024-11-01 00:01:06
text
深入解析JWT的实现与应用
本文深入探讨了JSON Web Token (JWT) 的实现机制及其应用场景。JWT 是一种基于 RFC 7519 标准的开放性认证协议,用于在各方之间安全地传输信息。文章详细分析了 JWT 的结构、生成和验证过程,并讨论了其在现代 Web 应用中的实际应用案例,为开发者提供了全面的理解和实践指导。 ...
[详细]
蜡笔小新 2024-10-31 20:06:46
text
如何在Android应用中添加自定义返回按钮功能
本文将详细介绍在Android应用中添加自定义返回按钮的方法,帮助开发者更好地理解和实现这一功能。通过具体的代码示例和步骤说明,本文旨在为初学者提供清晰的指导,确保他们在开发过程中能够顺利集成返回按钮,提升用户体验。 ...
[详细]
蜡笔小新 2024-10-31 19:03:53
text
结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法
结语 | 《探索二进制世界:软件安全与逆向分析》读书笔记:深入理解二进制代码的逆向工程方法 ...
[详细]
蜡笔小新 2024-10-31 18:43:36
text
Spring框架入门指南:专为新手打造的详细学习笔记
Spring框架是Java Web开发中广泛应用的轻量级应用框架,以其卓越的功能和出色的性能赢得了广大开发者的青睐。本文为初学者提供了详尽的学习指南,涵盖基础概念、核心组件及实际应用案例,帮助新手快速掌握Spring框架的核心技术与实践技巧。 ...
[详细]
蜡笔小新 2024-10-31 13:26:04
tree
深入解析Gradle中的Project核心组件
在Gradle构建系统中,`Project` 是一个核心组件,扮演着至关重要的角色。通过使用 `./gradlew projects` 命令,可以清晰地列出当前项目结构中包含的所有子项目,这有助于开发者更好地理解和管理复杂的多模块项目。此外,`Project` 对象还提供了丰富的配置选项和生命周期管理功能,使得构建过程更加灵活高效。 ...
[详细]
蜡笔小新 2024-10-31 09:53:03
instance
【高德地图Android开发套件】详尽视频教程
前两天参加了高德在北航举办的公开课,感觉非常不错。完成老师布置的作业之后,还顺利地拿到了高德开发者认证证书!!现在来跟大家分享一下,如何快速学习【高德地图AndroidSDK】的开发。一天包会!连 ...
[详细]
蜡笔小新 2024-10-23 10:38:58
text
java.lang包修改_记一次使用修改字节码的方法解决java.lang.NoSuchMethodError
接兔兔国际sdkane充值界面选择兔币充值就会闪退,观察logcat,NoSuchMethodError:com.tutu.common.a.b.get ...
[详细]
蜡笔小新 2024-10-09 18:02:09
text
dataimagepng php_data:image/png;base64的用法详解(最全)
大家可能注意到了,网页上有些图片的src或css背景图片的url后面跟了一大串字符,比如:background-image:url(dat ...
[详细]
蜡笔小新 2024-10-09 12:06:39
text
Android动画简介与类型分析
本文介绍了Android动画的基本概念及其主要类型。Android动画主要包括三种形式:视图动画(也称为补间动画或Tween动画),主要通过改变视图的属性来实现动态效果;帧动画,通过顺序播放一系列预定义的图像来模拟动画效果;以及属性动画,通过对对象的属性进行平滑过渡来创建更加复杂的动画效果。每种类型的动画都有其独特的应用场景和实现方式,开发者可以根据具体需求选择合适的动画类型。 ...
[详细]
蜡笔小新 2024-11-01 15:31:02
text
jQuery Flot 数据可视化插件:高效绘制图表的专业工具
jQuery Flot 是一款高效的数据可视化插件,专为绘制各种图表而设计。该工具支持丰富的图表类型和自定义选项,适用于多种应用场景。用户可以通过其官方网站获取示例代码和下载资源,以便快速上手和使用。 ...
[详细]
蜡笔小新 2024-11-01 12:28:23
text
如何在运行时动态获取Entity Framework中的ObjectSet
?
在运行时动态获取Entity Framework中的ObjectSet可以通过反射机制实现。这种方法允许开发者在应用程序运行期间根据需要加载不同的实体集合,从而提高代码的灵活性和可扩展性。通过使用`DbContext`类的`Set`方法,结合类型信息,可以轻松地实现这一目标。此外,还可以利用`Type`对象和泛型方法来进一步增强动态性,确保在处理多种实体类型时更加高效和安全。 ...
[详细]
蜡笔小新 2024-11-01 11:46:19
input
BZOJ4240 Gym 102082G:贪心算法与树状数组的综合应用
BZOJ4240 Gym 102082G 题目 "有趣的家庭菜园" 结合了贪心算法和树状数组的应用,旨在解决在有限时间和内存限制下高效处理复杂数据结构的问题。通过巧妙地运用贪心策略和树状数组,该题目能够在 10 秒的时间限制和 256MB 的内存限制内,有效处理大量输入数据,实现高性能的解决方案。提交次数为 756 次,成功解决次数为 349 次,体现了该题目的挑战性和实际应用价值。 ...
[详细]
蜡笔小新 2024-11-01 09:27:15
schema
深入解析Spring框架:简易版AOP实现方法探讨
本文作为“实现简易版Spring系列”的第五篇,继前文深入探讨了Spring框架的核心技术之一——控制反转(IoC)之后,将重点转向另一个关键技术——面向切面编程(AOP)。对于使用Spring框架进行开发的开发者来说,AOP是一个不可或缺的概念。了解AOP的背景及其基本原理,对于掌握这一技术至关重要。本文将通过具体示例,详细解析AOP的实现机制,帮助读者更好地理解和应用这一技术。 ...
[详细]
蜡笔小新 2024-10-31 19:58:14
header
MySQL 源代码解析:二进制日志崩溃恢复机制深入探讨
本文详细解析了 MySQL 5.7.20 版本中二进制日志(binlog)崩溃恢复机制的工作流程。假设使用 InnoDB 存储引擎,并且启用了 `sync_binlog=1` 配置,文章深入探讨了在系统崩溃后如何通过 binlog 进行数据恢复,确保数据的一致性和完整性。 ...
[详细]
蜡笔小新 2024-10-31 08:44:53
迷途羔羊1989_751
这个家伙很懒,什么也没留下!
Tags | 热门标签
byte
buffer
utf-8
header
hashset
actionscrip
php
grid
instance
netty
web3
express
subset
uri
callback
email
vbscript
schema
range
text
datetime
emoji
usb
post
golang
timezone
tree
input
timestamp
regex
RankList | 热门文章
1
《黄雀痴》(杂言诗)翻译与赏析:唐代诗人王维原著解析
2
Linux磁盘管理入门指南:MBR分区格式详解与安装步骤
3
探讨 `org.openide.windows.TopComponent.componentOpened()` 方法的应用及其代码实例分析
4
深入解析 Android 线性布局的关键属性与应用技巧
5
解读“篌”字:新华字典中的发音、笔画、释义及常见组合与命名应用
6
成功实现Asp.Net MVC3网站与MongoDB数据库的高效集成
7
Go语言实现Redis客户端与服务器的交互机制深入解析
8
优化流媒体中 Trick Play 的图像组与图像头定位技术
9
深入解析Python协程:asyncio模块的应用与优化
10
获取贵州省毕节市高分辨率谷歌卫星影像图
11
探究 /etc/rc.d/ 目录中启动脚本执行后的守护进程特性
12
iOS原生苹果缓存HTML技巧与分享URL实战经验分享
13
探讨String参数作为锁对象时,实际锁定的是哪个具体实例?
14
深入探讨Photoshop的高级应用与技巧
15
Liferay Portal 中 AutoEscape 构造函数的应用与实例代码解析
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有