- 浏览: 5161341 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
silence19841230:
先拿走看看
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
masuweng 写道发下源码下载地址吧!三个相关文件打了个包 ...
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
发下源码下载地址吧!
SpringBoot2.0开发WebSocket应用完整示例 -
masuweng:
SpringBoot2.0开发WebSocket应用完整示例 -
wallimn:
水淼火 写道你好,我使用以后,图标不显示,应该怎么引用呢,谢谢 ...
前端框架iviewui使用示例之菜单+多Tab页布局
上一篇文章介绍了一个简单的秒表程序,是使用J2ME提供的StringItem开发的,简单,但是不够美观,下面贴一个使用Canvas编写的秒表程序,就当做一个进阶的例子吧。
/***********本人原创,欢迎转载,转载请保留本人信息*************/
作者:wallimn 电邮:wallimn@sohu.com 时间:2008-02-13
博客:http://blog.csdn.net/wallimn http://wallimn.iteye.com
网络硬盘:http://wallimn.ys168.com
/***********文章发表请与本人联系,作者保留所有权利*************/
package midp.wallimn.com; import java.util.Date; import java.util.Timer; import java.util.TimerTask; import javax.microedition.lcdui.Canvas; import javax.microedition.lcdui.Command; import javax.microedition.lcdui.CommandListener; import javax.microedition.lcdui.Display; import javax.microedition.lcdui.Displayable; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Image; import javax.microedition.lcdui.game.Sprite; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; /** *//** * 秒表程序的高级版本,使用Canvas,外观稍好。 <br/> * * @version : V1.0<br/> * @author : (Email: wallimn@sohu.com QQ: 54871876)<br/> * @date : 2008-1-14 下午01:37:28<br/> */ public class StopWatchMIDlet extends MIDlet implements CommandListener ...{ private MyCanvas mainForm; private Timer m_timer;// 定时器 private Display display; private Command EXIT_CMD = new Command("退出", Command.EXIT, 1); private Command STOP_CMD = new Command("停止", Command.STOP, 1); private Command START_CMD = new Command("开始", Command.STOP, 1); private MyTimerTask timerTask; class MyTimerTask extends TimerTask ...{ public int s = 0;// 秒 public int m = 0;// 分 public int h = 0;// 时 public int ms = 0;// 1/100秒 public MyTimerTask() ...{ } public void init() ...{ s = 0; m = 0; h = 0; ms = 0; } public void run() ...{ if (ms == 9) ...{ ms = 0; if (s == 59) ...{ s = 0; if (m == 59) ...{ m = 0; h++; } else ...{ m++; } } else ...{ s++; } } else ...{ ms++; } mainForm.repaint(); } } public StopWatchMIDlet() ...{ display = Display.getDisplay(this); mainForm = new MyCanvas(); mainForm.addCommand(EXIT_CMD);// 添加命令显示 mainForm.addCommand(START_CMD);// 添加命令显示 mainForm.setCommandListener(this);// 添加事件监听 } protected void destroyApp(boolean arg0) ...{ } protected void pauseApp() ...{ } protected void startApp() throws MIDletStateChangeException ...{ display.setCurrent(mainForm); } public void commandAction(Command c, Displayable s) ...{ if (c == EXIT_CMD) ...{ if (m_timer != null) ...{// 停止计时器,释放资源 m_timer.cancel(); m_timer = null; } destroyApp(false); notifyDestroyed(); } else if (c == STOP_CMD) ...{ this.m_timer.cancel(); m_timer = null; mainForm.removeCommand(STOP_CMD); mainForm.addCommand(START_CMD); } else if (c == START_CMD) ...{ // 初始化一个计时器,初始化一个任务 m_timer = new Timer(); timerTask = null;// 先释放旧的任务 timerTask = new MyTimerTask(); timerTask.init(); m_timer.schedule(timerTask, new Date(), 100); mainForm.removeCommand(START_CMD); mainForm.addCommand(STOP_CMD); } } /** *//** * 日历显示输出 <br/> * * @version : V1.0<br/> * @author : wallimn(Email: wallimn@sohu.com QQ: 54871876)<br/> * @date : 2008-1-22 下午04:19:51<br/> */ class MyCanvas extends Canvas ...{ int m_width, m_height; private Image numberImage = null; /** *//** * 数字的宽度 */ private final int numWidth = 11; /** *//** * 数字的高度 */ private final int numHeight = 15; /** *//** * 冒号的宽度 */ private final int colonWidth = 7; private int xPos, yPos; /** *//** * 数字的Y坐标 */ private int numStyle = 15; public MyCanvas() ...{ try ...{ numberImage = Image.createImage("/images/misc.png"); } catch (Exception e) ...{ return; } // 计算数字显示位置,以便使数字居中显示 xPos = (this.getWidth() - numWidth * 9) / 2; yPos = (this.getHeight() - numHeight) / 2; } protected void paint(Graphics g) ...{ g.setColor(0xFFFFFF); g.fillRect(0, 0, this.getWidth(), this.getHeight()); drawMyFlag(g); int h = 0, m = 0, s = 0, ms = 0; if (timerTask != null) ...{ h = timerTask.h; m = timerTask.m; s = timerTask.s; ms = timerTask.ms; } int x = xPos; drawNumber(g, x, yPos, h / 10, numStyle); x += numWidth; drawNumber(g, x, yPos, h % 10, numStyle); x += numWidth; drawNumber(g, x, yPos, 10, numStyle); x += colonWidth; drawNumber(g, x, yPos, m / 10, numStyle); x += numWidth; drawNumber(g, x, yPos, m % 10, numStyle); x += numWidth; drawNumber(g, x, yPos, 10, numStyle); x += colonWidth; drawNumber(g, x, yPos, s / 10, numStyle); x += numWidth; drawNumber(g, x, yPos, s % 10, numStyle); x += numWidth; drawNumber(g, x, yPos, 10, numStyle); x += colonWidth; drawNumber(g, x, yPos, ms, numStyle); } /** *//** * 输出图形格式的数字,这种方式利于数字的多样化 <br/> 编码:wallimn 时间:2008-1-22 下午04:22:55<br/> */ private void drawNumber(Graphics g, int x, int y, int num, int ypos) ...{ int wid = numWidth; if(num==10)wid =colonWidth; g.drawRegion(numberImage, num * numWidth, ypos, wid, numHeight, Sprite.TRANS_NONE, x, y, Graphics.HCENTER | Graphics.VCENTER); } private void drawMyFlag(Graphics g)...{ g.drawRegion(numberImage, 0, 32, 118, 22, Sprite.TRANS_NONE, 0, 0, Graphics.TOP | Graphics.LEFT); } protected void showNotify() ...{ } protected void hideNotify() ...{ } /** *//** * 按钮处理 功能描述: 编码时间:2008-1-22 下午04:23:14 参数及返回值: * * @param kc * @see javax.microedition.lcdui.Canvas#keyPressed(int) */ protected void keyPressed(int kc) ...{ int ga = this.getGameAction(kc); if (ga == Canvas.FIRE || kc == Canvas.KEY_NUM5) ...{ if (numStyle == 0) ...{ numStyle = numHeight; } else if (numStyle == numHeight) ...{ numStyle = 0; } repaint(); } } protected void keyReleased(int arg0) ...{ // 时间: 2008-1-22 上午10:40:00 } } }
/***********本人原创,欢迎转载,转载请保留本人信息*************/
作者:wallimn 电邮:wallimn@sohu.com 时间:2008-02-13
博客:http://blog.csdn.net/wallimn http://wallimn.iteye.com
网络硬盘:http://wallimn.ys168.com
/***********文章发表请与本人联系,作者保留所有权利*************/
发表评论
-
gradle编译错误:Could not find method compile() for arguments
2020-09-19 10:50 18511编译(IDEA+Gradle)一个别人的工程,出现一个 ... -
netty心跳检查之UDP篇
2019-09-15 08:50 2396部分UDP通信场景中,需要客户端定期发送心跳信息,以获取终 ... -
解决tomcat部署两个SpringBoot应用提示InstanceAlreadyExistsException
2019-06-30 11:49 3392两个SpringBoot应用部署在一个Tomcat中,单独 ... -
Eclipse配置MyBatis代码自动化功能
2019-06-29 10:16 17731.安装插件 Eclipse中,Help->Ecli ... -
vue.js中使用qrcode生成二维码
2019-05-20 00:00 7656一、安装包 npm install qrcodejs2 --s ... -
MySQL插入数据报错: Incorrect string value: '\xFD\xDE'
2019-03-31 23:19 1254我MySQL数据库用的uft-8字符集,插入数据一直很正常 ... -
vue自定义组件并双向绑定属性
2019-03-08 22:46 3258做了两个子组件,原理基本一样,一个是使用原生的select ... -
vue-router简单示例
2019-03-05 00:32 1153写个基本完整、稍有借鉴意义的示例,防止自己忘记。 &l ... -
“联通充值系统繁忙”轻松应对
2019-02-06 11:03 3973大过年的,联通充个值一直报“充值系统繁忙”。昨天晚上试了几 ... -
electron.js数据库应用---导航菜单(element-ui+mysql)
2019-02-05 21:33 2364一、环境搭建 略, ... -
electron.js数据库应用---入门(mysql+element-ui)
2019-01-27 23:19 7504我的机器:Windows10,64 ... -
SpringMVC 在controller层中注入成员变量request,是否线程安全
2018-12-17 21:17 2748@RestController public class ... -
VueJS 组件参数名命名与组件属性转化
2018-12-03 00:00 2077转自:https://www.cnblogs.com/meiy ... -
vue-resource拦截器实现token发送及检验自动化
2018-11-16 22:38 3079用了很长时间vue-resource,最近思考$http发 ... -
element-ui试用手记
2018-10-29 20:25 1748element-ui、iviewui都以vue.js为基础 ... -
iviewui中表格控件中render的使用示例
2018-07-07 16:46 9788示例了如何在表格中显示按钮,如何将代码转化为文字。 i ... -
Tomcat错误“Alias name tomcat does not identify a key entry”解决
2018-07-05 21:39 6575申请到了阿里云的证书后,下载、按照说明生成jks格式证书、 ... -
阿里云免费证书“fileauth.txt内容配置错误”解决
2018-07-05 20:43 5301最近研究微信小程序开发,上阿里云申请了个证书,使用文件验证 ... -
springboot2.0跨域配置
2018-07-04 22:11 5286springboot2.0跨域配置: 一、代码 ... -
微信小程序使用code换openid的方法(JAVA、SpringBoot)
2018-07-01 21:52 10400微信小程序序的代码中提示,使用code换取openid,但 ...
相关推荐
**J2ME手机程序开发** Java 2 Micro Edition(J2ME)是Java平台的一个子集,主要用于嵌入式设备和移动设备,如早期的智能手机和平板电脑。它提供了开发和部署小型应用程序,称为MIDlets,的能力。J2ME在手机程序...
**手机J2ME程序编写教程** Java Micro Edition(J2ME)是Java平台的一个子集,主要用于嵌入式设备和移动设备,如早期的智能手机。本教程将带你深入理解如何利用J2ME技术来开发手机应用程序。 ### 一、J2ME概述 ...
**J2ME程序开发全方位基础讲解汇总** Java 2 Micro Edition (J2ME) 是Java平台的一个子集,主要用于嵌入式系统、移动设备和物联网(IoT)应用的开发,如手机、智能家电和车载信息系统等。本教程将全方位地讲解J2ME...
J2ME,全称Java 2 Micro Edition,是Java平台的一个子集,主要用于嵌入式设备和移动设备的开发,如手机、智能电表、家庭自动化设备等。它提供了跨平台的开发环境,使得开发者可以编写一次代码,到处运行。J2ME由两大...
本教程将引导初学者深入理解J2ME手机程序开发,帮助你快速入门并掌握核心概念。 1. **J2ME概述** J2ME由Java ME配置(Configurations)和Java ME框架(Profiles)组成。配置定义了设备的基本能力,如内存大小和...
网络的服务质量,Java已经从一种平台无关的编程语言演变成一种与厂商及平台无关的健壮的服务器端技术,促使IT业界深入发掘以Web为核心的应用程序的巨大潜力。J2ME 的出现使这一变化达到了一种新的高度。J2ME,简称...
J2ME的游戏程序开发则是利用J2ME平台开发可在手机等移动设备上运行的简单游戏。由于设备资源有限,J2ME游戏通常比PC游戏或游戏机游戏简单许多。下面将围绕J2ME游戏程序开发的关键知识点进行详细解释。 1. J2ME的...
**J2ME程序开发全方位基础讲解** Java 2 Micro Edition(J2ME)是Java平台的一个子集,专为资源有限的嵌入式设备和移动设备设计,如手机、智能手表和数字电视等。J2ME提供了一种标准化的方法来在不同设备上运行应用...
Java 2 Micro Edition(j2ME)是Oracle公司推出的用于开发和部署在小型设备、移动设备以及嵌入式系统上的应用程序的平台。它以其轻量级、跨平台的特性,成为了早期手机游戏开发的重要工具。本教程将深入探讨j2ME游戏...
【Eclipse开发J2ME手机程序】涉及到的关键知识点如下: 1. **J2ME (Java 2 Micro Edition)**: J2ME 是Java平台的一个子集,专为资源有限的嵌入式设备设计,如手机、PDA等。它由配置(Configuration)和简表...
综上所述,基于J2ME平台的手机应用程序开发涉及了从基础的J2ME架构理解,到具体的MIDP组件使用,再到开发工具的选择和应用发布流程。开发者需要掌握这些核心概念和技术,才能有效创建出能在多种手机平台上运行的高效...
《J2ME程序开发实用案例从入门到精通》是一本专为Java初学者和开发者设计的教程,旨在帮助读者深入理解和掌握J2ME(Java 2 Micro Edition)平台的编程技术。J2ME是Java技术在移动设备和嵌入式系统上的应用版本,广泛...
**基于Eclipse环境的J2ME应用程序开发** Java 2 Micro Edition(J2ME)是Java平台的一个子集,主要用于嵌入式设备和移动设备,如手机、智能家电等。Eclipse作为流行的Java开发集成环境,提供了强大的工具支持,使得...
【标题】"我的第一个J2ME程序(计算器)" 涉及到的知识点主要围绕Java Micro Edition (J2ME) 开发,特别是如何利用J2ME来创建一个基础的计算器应用。J2ME是Java平台的一个子集,专门用于嵌入式设备和移动设备,如早期...
**J2ME中文教程——开启手机程序开发之旅** Java 2 Micro Edition(J2ME)是Java平台的一个重要分支,专为资源有限的嵌入式设备设计,包括移动电话、智能家电、数字电视等。本教程将深入讲解J2ME在手机程序开发中的...
### j2me手机游戏开发技术详解 #### J2ME概述 **1.1 J2ME体系结构** **1.1.1 JAVA技术的版本** Java技术根据不同的应用场景分为三个主要版本: - **J2SE(Java 2 Platform, Standard Edition)**:标准版,面向...