- 浏览: 868167 次
- 性别:
- 来自: 上海
最新评论
-
waterflow:
感谢分享
简单的ChartDirector生成图表例子 -
YQuite:
写到最后一种文件才看到这个,洼的一声哭了出来 - - !
java简单解析docx、pptx、xlsx文档 -
q394469902:
Android通过selector改变界面状态 -
db6623919:
直接粘贴别人帖子还是英文的,有意思?
实现RTSP协议的简单例子 -
ykou314:
请问下,这些超级命令,是否需要android root权限,尤 ...
Android系统在超级终端下必会的命令大全(七)
原文转载自:http://wiki.forum.nokia.com/index.php/J2ME_Tabbed_Menu
We will build a reusable Tabbed Menu using J2ME.
View it in action
You can find a midlet showing this component in action here.
Our component will support:
- Full styling of tabs (bg color, fore color, font face, margin, paddings and corner radius)
- Automatic horizontal scrolling, so that you can put as many tab you want, without caring about screen width
Building the tabbed menu
Let's start from the customizable variables, whose aim is self-explaining:
int background = 0xffffff; int bgColor = 0xcccccc; int bgFocusedColor = 0x0000ff; int foreColor = 0x000000; int foreFocusedColor = 0xffffff; int cornerRadius = 4; int padding = 2; int margin = 2; Font font = Font.getDefaultFont(); int scrollStep = 20;
Then we'll define some internal variables, used to mantain the tabbed menu state:
int selectedTab = 0; //selected tab index int[] tabsWidth = null; //width of single tabs int[] tabsLeft = null; //left X coordinate of single tabs int tabHeight = 0; //height of tabs (equal for all tabs) String[] tabs = null; //tab labels int menuWidth = 0; //total menu width int viewportWidth = 0; //visible viewport width int viewportX = 0; //current viewport X coordinate
Now, we'll define a simple constructor accepting tab labels and viewport width as parameters:
public TabMenu(String[] tabs, int width) { this.tabs = tabs; this.viewportWidth = width; initialize(); } void initialize() { tabHeight = font.getHeight() + cornerRadius + 2 * padding; menuWidth = 0; tabsWidth = new int[tabs.length]; tabsLeft = new int[tabs.length]; for(int i = 0; i < tabsWidth.length; i++) { tabsWidth[i] = font.stringWidth(tabs[i]) + 2 * padding + 2 * cornerRadius; tabsLeft[i] = menuWidth; menuWidth += tabsWidth[i]; if(i > 0) { menuWidth += margin; } } }
Now, let's define an utility method to check if a tab is visible or not.
private boolean isTabVisible(int tabIndex) { return tabsLeft[tabIndex] < viewportX + viewportWidth && tabsLeft[tabIndex] + tabsWidth[tabIndex] >= viewportX; }
And now we'll implement the tab switching/scrolling methods, that will use the isTabVisible method defined above:
public void goRight() { go(+1); } public void goLeft() { go(-1); } private void go(int delta) { int newTab = Math.max(0, Math.min(tabs.length - 1, selectedTab + delta)); boolean scroll = true; if(newTab != selectedTab && isTabVisible(newTab)) { selectedTab = newTab; if( (delta > 0 && tabsLeft[selectedTab] + tabsWidth[selectedTab] > viewportX + viewportWidth) || (delta < 0 && tabsLeft[selectedTab] < viewportX)) { scroll = true; } else { scroll = false; } } if(scroll) { viewportX = Math.max(0, Math.min(menuWidth - viewportWidth, viewportX + delta * scrollStep)); } }
And now, we're ready to paint our menu :)
public void paint(Graphics g) { int currentX = - viewportX; g.setClip(0, 0, viewportWidth, tabHeight); g.setColor(background); g.fillRect(0, 0, viewportWidth, tabHeight); for(int i = 0; i < tabs.length; i++) { g.setColor(i == selectedTab ? bgFocusedColor : bgColor); g.fillRoundRect(currentX, 0, tabsWidth[i], tabHeight + cornerRadius, 2 * cornerRadius, 2 * cornerRadius); g.setColor(i == selectedTab ? foreFocusedColor : foreColor); g.drawString(tabs[i], currentX + cornerRadius + padding, cornerRadius + padding, Graphics.LEFT | Graphics.TOP); currentX += tabsWidth[i] + margin; } }
Download source code
You can download source code of TabMenu here:
开源一个J2ME解析类 http://fonter.iteye.com/blogs/409830
手机中的重定向问题及处理 http://fonter.iteye.com/blog/400836
J2ME如何通过cmwap直接访问互连网 http://fonter.iteye.com/blog/400868
安装JAD时提示JAD无效原因之一 http://fonter.iteye.com/blog/400888
J2ME网络交互之优化 http://fonter.iteye.com/blog/405137
解决Eclipse无法调试J2ME程序的配置方法 http://fonter.iteye.com/blog/405697
J2ME模拟器加载RMS时突然失效的原因 http://fonter.iteye.com/blog/407576
J2ME飞信协议分析(初稿) http://fonter.iteye.com/blog/408385
发表评论
-
j2me to android 例子源码下载
2009-11-11 12:21 1641推荐下载: iWidsets最新版2.0.0下载(J2ME) ... -
J2ME时间例子
2009-11-04 01:51 2101下面是一个时间例子: Calendar.getInst ... -
MP3Dict应用发布了
2009-11-03 18:33 1675iWidsets发布新用MP3Dict了 ... -
一些很特别的J2ME开源项目
2009-11-03 04:35 2201StrutsME 一个轻量级的序列化协议,使J2ME客户端能调 ... -
基于J2ME平台的Log4j
2009-11-03 03:55 2114J2ME平台并没有提供LOG来获取一些有用的信息,如 ... -
iWidsets公告
2009-10-21 15:16 1842由于前段时间忘记备案,国庆前关闭网站,导致软件无法下载,请见谅 ... -
iWidsets 发布1.8.1版本(20090920)
2009-09-20 21:21 19981.1 iWidsets 发布1.8.1版本,此版本主要修正B ... -
iWidsets J2ME客户端首次发布了
2009-09-13 13:40 1115经过九个月的开发,iWidsets J2ME客户端首次发布了, ... -
iWidsets J2ME客户端首次发布了
2009-09-13 12:20 1234经过九个月的开发,iWidsets J2ME客户端首次发布了, ... -
解决java.lang.SecurityException: Access denied
2009-08-13 15:42 11247NOKIA的一些目录不允许创建文件,所以会抛出java.lan ... -
J2ME FileConnection开发
2009-08-07 00:00 2646下面是对开发J2ME FileConnection的一些总结: ... -
Experiments in Streaming Content in Java ME(源码下载)
2009-08-04 09:38 1333Experiments in Streaming Conten ... -
keyRepeated和keyPressed处理
2009-07-26 21:38 3135今天修改了一个很重要的Bug,这个BUG会不断向服务端请求相同 ... -
Experiments in Streaming Content in Java ME(3)
2009-07-14 11:47 1982Back to RTPSourceStream and Str ... -
Experiments in Streaming Content in Java ME(2)
2009-07-14 11:12 2804Creating an RTSP Protocol Handl ... -
Experiments in Streaming Content in Java ME(1)
2009-07-14 11:06 3802Since my book on Mobile Media A ... -
J2ME实现RTSP(只有在支持的手机才能用)
2009-07-12 21:09 2015最近在研究J2ME实现RTSP协议,在索爱开发网站中看到一个类 ... -
少用System.out.println()
2009-07-11 16:13 3510之前就知道System.out.println ... -
读取流最快方式
2009-07-09 11:42 2604读取流最快方式,当你知道流的长度时,如流长度是maxLengt ... -
让你的J2ME安装包跑起来及其优化
2009-07-09 11:21 1286一、无法下载:通过HTTP下载安装包时,可能会出现“未知文件类 ...
相关推荐
J2ME,全称Java 2 Micro Edition,是Java平台的一个子集,主要用于嵌入式设备和移动设备的开发,如手机、智能电表、家庭自动化设备等。它提供了跨平台的开发环境,使得开发者可以编写一次代码,到处运行。J2ME由两大...
《J2ME飞机游戏开发详解》 J2ME(Java 2 Micro Edition)是Java平台的一个子集,专为移动设备、嵌入式系统等资源有限的环境设计。本篇文章将深入探讨如何利用J2ME技术开发一款简单的飞机游戏,以此帮助初学者理解...
【J2ME源码 3d_menu(代码)】是一个基于Java 2 Micro Edition (J2ME) 平台开发的项目,它提供了一个三维菜单的实现。J2ME是Java的一个子集,专为资源有限的移动设备如手机和嵌入式系统设计,用于开发和部署应用程序...
**J2ME API 2.0 - J2ME使用手册 - J2ME帮助文档** Java 2 Micro Edition(J2ME)是Java平台的一个子集,专为资源有限的设备如移动电话、智能手表和家用电器等设计。J2ME API 2.0 提供了在这些小型设备上开发应用...
在J2ME(Java 2 Micro Edition)平台上开发游戏时,地图的设计与绘制是至关重要的一个环节。J2ME作为一种轻量级的Java平台,广泛应用于移动设备,如早期的智能手机和平板电脑,用于实现各种应用程序,特别是游戏。本...
**J2ME中文版教程——全面解读移动设备编程** J2ME(Java 2 Micro Edition)是Java平台的一个重要组成部分,专为嵌入式设备、移动电话和其他资源有限的设备设计。这个J2ME中文版教程是针对初学者和有一定经验的...
J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏
J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏J2ME小游戏
j2me 开发框架介绍 j2me 是一种用于开发无线应用程序的平台,它提供了一个灵活、强大和开放的开发环境。随着 j2me 的普及,出现了许多开源框架,旨在简化开发过程,提高开发效率。下面将介绍这些框架,並分析它们的...
**J2ME教材:J2ME&Gaming中文版** J2ME,全称为Java 2 Micro Edition,是Java平台的一个子集,主要用于嵌入式设备和移动设备,如手机、智能手表等。这个“J2ME&Gaming中文版”教材主要针对的是Java在游戏开发领域的...
Java 2 Micro Edition (J2ME) 是一种Java平台,专为嵌入式设备和移动设备,特别是手机设计。在2000年代初期,J2ME是许多非智能手机上实现互联网浏览的主要技术,其中“j2me手机浏览器”就是这样一个应用。这个应用...
Java 2 Micro Edition(J2ME)是一种针对嵌入式设备和移动设备的Java平台,主要用于开发手机游戏、应用程序和服务。"j2me游戏.rar"很可能是包含了一系列使用J2ME技术开发的游戏资源包。在本文中,我们将深入探讨J2ME...
【标题】"Tank_J2ME.rar_j2me" 指的是一个关于J2ME(Java 2 Micro Edition)平台的项目,其中包含了实现“塔克大战”游戏的源代码和资源文件。J2ME是Java的一个子集,主要用于开发在移动设备、嵌入式系统等小型设备...
Java 2 Micro Edition(J2ME)是Java平台的一个子集,主要用于开发和部署移动设备、嵌入式设备上的应用程序。这款"j2me经典游戏源码"提供了一个绝佳的学习平台,帮助开发者深入理解J2ME游戏编程的核心概念和技术。 ...
Java 2 Micro Edition(J2ME)是Java平台的一个重要组成部分,主要针对嵌入式设备和移动设备,如手机、智能电表、机顶盒等。这个“j2me课件.rar”压缩包包含了浙江工业大学软件工程专业2009年的J2ME课程相关材料,...
**j2ME手机移动开发** Java 2 Micro Edition(j2ME)是Java平台的一个重要分支,主要用于开发在小型设备上运行的应用程序,如手机、智能手表和家用电器等。j2ME为移动设备提供了丰富的功能,使得开发者可以构建功能...
【标题】"J2ME移植Android引擎"涉及的是将基于Java Micro Edition (J2ME) 开发的游戏或应用转换到Android平台的过程。J2ME是Java平台的一个子集,主要用于移动设备和嵌入式系统,而Android则是一个开源的操作系统,...
【安卓AIDE开发J2ME】是一个教程主题,它涵盖了使用AIDE集成开发环境(IDE)来开发Java Micro Edition (J2ME)应用程序的过程。AIDE是一款强大的Android开发工具,通常用于编写原生的Android应用,但在此场景下,它被...
Java 2 Micro Edition(J2ME)是一种针对嵌入式设备和移动设备的Java平台,主要用于开发移动应用程序,包括手机游戏、网络应用以及多媒体播放器等。本资源包"j2me例子大全"包含了J2ME技术的多个方面,旨在为开发者...
J2ME,全称Java 2 Micro Edition,是Java平台的一个子集,专门用于嵌入式设备和移动设备的开发,如手机、智能家电等。它提供了轻量级的运行环境和API,使得开发者能够在资源有限的设备上构建功能丰富的应用程序。 ...