`
izuoyan
  • 浏览: 9223131 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

LWUIT + ChartComponent 之一实现饼图(PieChart)

阅读更多
本文来自http://blog.csdn.net/hellogv/


本文源代码下载地址:http://download.csdn.net/source/872671
本文所用的Chart组件为J2me ChartComponent - ver 1.5.2,该组件的下载页面为http://www.beanizer.org/site/index.php/en/Software/J2me-ChartComponent-ver-1.5.html。按照官网所说,ChartComponent的二进制开发包可以用于个人开发以及商业项目,而源代码则需要购买,为了支持作者开发,最好是购买一份啦。
ChartComponent,基于J2ME的LCDUI,而本文要演示的是,如何把ChartComponent运用到LWUIT之上,其他LCDUI的控件也可以参照这个方法,从而运作在LWUIT上。
在LWUIT上实现Chart功能,可以利用LWUIT固有的组件,混合使用,效果挺好的,例如加入chart的每个图块说明(说明与图块颜色对应)时,可以用FlowLayout排列方式+Label控件,能够自适应,比用UI直接画省好多功夫。
  • 首先,先在主文件UIDemoMIDlet加入以下代码:
  1. /**
  2. *lcdui的图像转换为lwuit的图像
  3. */
  4. staticImagelcdui2lwuit(javax.microedition.lcdui.Imagelcdui_img)
  5. {
  6. //新建RGB数组
  7. int[]bufferArray=newint[lcdui_img.getWidth()*lcdui_img.getHeight()];
  8. //把lcdui的Image保存为RGB数组
  9. lcdui_img.getRGB(bufferArray,0,lcdui_img.getWidth(),0,0,lcdui_img.getWidth(),lcdui_img.getHeight());
  10. //********透明背景,可以省略*******************************************//
  11. for(inti=0;i<bufferArray.length;i++){
  12. if((bufferArray[i]&0x00FFFFFF)==0x00FFFFFF)//如果是背景
  13. bufferArray[i]=bufferArray[i]&0x00FFFFFF;
  14. }
  15. //********透明背景,可以省略*******************************************//
  16. //新建lwuit的Image,并读取RGB数组
  17. Imageresult=Image.createImage(bufferArray,lcdui_img.getWidth(),lcdui_img.getHeight());
  18. returnresult;
  19. }
  20. /**
  21. *RGB颜色转换为int
  22. */
  23. staticintRGBtoInt(intr,intg,intb)
  24. {
  25. Stringresult=Integer.toHexString(r)+Integer.toHexString(g)+Integer.toHexString(b);
  26. returnInteger.parseInt(result,16);
  27. }
  • 其次,编写PieChartDemo的代码,代码有详细的注释,非常好理解:
  1. /*
  2. *LWUIT+ChartComponent,实现多种图表
  3. *作者:张国威(咪当俺系噜噜)
  4. *本例实现的是“饼图”
  5. */
  6. packagecom.sun.lwuit.uidemo;
  7. importcom.sun.lwuit.Button;
  8. importcom.sun.lwuit.Command;
  9. importcom.sun.lwuit.Font;
  10. importcom.sun.lwuit.Form;
  11. importcom.sun.lwuit.Image;
  12. importcom.sun.lwuit.Label;
  13. importcom.sun.lwuit.events.ActionEvent;
  14. importcom.sun.lwuit.events.ActionListener;
  15. importcom.sun.lwuit.layouts.FlowLayout;
  16. importorg.beanizer.j2me.charts.ChartItem;
  17. importorg.beanizer.j2me.charts.PieChart;
  18. publicclassPieChartDemoimplementsActionListener{
  19. publicFormform=newForm("VBarChartDemo");
  20. privateCommandbackCommand=newCommand("Back",1);
  21. finalPieChartpieChart=newPieChart("");
  22. PieChartDemo()
  23. {
  24. //饼图说明
  25. Stringchart_str[]={"█A:你好吗","█B:早上好","█C:中午好","█D:晚上好","█E:吃宵夜","█F:睡懒觉"};
  26. //饼图颜色
  27. int[][]color={{0,0,200},{0,200,0},{50,15,30},{100,0,200},{0,200,100},{200,100,200}};
  28. //饼图范围
  29. int[]percent={15,10,5,20,34,16};
  30. //绘制柱体的说明
  31. initChartInfo(chart_str,color);
  32. intwidth=form.getWidth();
  33. intheight=form.getHeight()-60;
  34. Imageimg_hbarChart=drawPieChart(pieChart,width,height,"",color,percent);//绘制柱体图
  35. Buttonbutton=newButton(img_hbarChart);
  36. button.getStyle().setBgTransparency(1);//透明背景,会非常消耗资源,速度减慢,注意使用
  37. button.setBorderPainted(false);
  38. form.addComponent(button);
  39. form.addCommand(backCommand);
  40. form.setCommandListener(this);
  41. form.setLayout(newFlowLayout());//必须使用这种排列,FlowLayout最适合
  42. }
  43. privatevoidinitChartInfo(String[]chart_str,int[][]color)
  44. {
  45. for(inti=0;i<chart_str.length;i++)//循环
  46. {
  47. Labelchart_info=newLabel(chart_str[i]);
  48. chart_info.getStyle().setFgColor(UIDemoMIDlet.RGBtoInt(color[i][0],color[i][1],color[i][2]));
  49. form.addComponent(chart_info);
  50. }
  51. }
  52. privateImagedrawPieChart(ChartItemitem,
  53. intwidth,
  54. intheight,
  55. Stringimagefile,
  56. int[][]color,//柱体颜色
  57. int[]percent)//柱体长度(百分比)
  58. {
  59. item.setFont(Font.FACE_PROPORTIONAL,Font.STYLE_PLAIN,Font.SIZE_SMALL);
  60. item.setDrawAxis(true);
  61. item.setPreferredSize(width-80,width-80);//设置chart控件的大小,饼图必须width=height
  62. if(imagefile.length()>0)//需要使用背景时
  63. {
  64. try{
  65. javax.microedition.lcdui.Imageimg=javax.microedition.lcdui.Image.createImage(imagefile);//读取背景图
  66. item.setBackgroundImage(img);//设置背景图
  67. }catch(Exceptionex){ex.printStackTrace();}
  68. }
  69. item.showShadow(true);//使用阴影特效
  70. item.setShadowColor(20,20,20);//设置阴影颜色
  71. item.setColor(40,40,200);
  72. item.resetData();
  73. for(inti=0;i<color.length;i++)//循环绘画柱体
  74. {
  75. item.addElement(String.valueOf((char)('a'+i)),percent[i],color[i][0],color[i][1],color[i][2]);
  76. }
  77. item.setMaxValue(100);//柱体代表数值的显示范围,100%
  78. //这个是lcdui的Image
  79. javax.microedition.lcdui.Imagelcdui_img=
  80. javax.microedition.lcdui.Image.createImage(width,height);//饼图大小,图像>控件
  81. //这个是lcdui的Graphics
  82. javax.microedition.lcdui.Graphicslcdui_g=lcdui_img.getGraphics();
  83. pieChart.drawPie(lcdui_g,
  84. 40,//x
  85. 40,//y
  86. width-100,//宽
  87. width-100);//长,这里设置的大小必须比width,height小,才能完全显示
  88. returnUIDemoMIDlet.lcdui2lwuit(lcdui_img);
  89. }
  90. publicvoidactionPerformed(ActionEventarg0){
  91. if(arg0.getCommand()==backCommand)
  92. {
  93. UIDemoMIDlet.backToMainMenu();
  94. }
  95. }
  96. }


分享到:
评论

相关推荐

    LWUIT_ChartComponent

    - **创建ChartComponent**:使用LWUIT的`Chart`类实例化一个图表对象,指定图表类型(饼图、柱状图或折线图)。 - **填充数据**:根据需求设置数据点,如设置每个饼图段的值,或者为柱状图和折线图设定X轴和Y轴的...

    j2me lwuit 1.4 源码+示例

    通过运行此示例,开发者可以直观地了解LWUIT如何实现各种UI元素和交互效果,从而学习和掌握LWUIT的使用方法。 "sun java(TM) wireless Toolkit 2.5.2_01 for CLDC"是开发J2ME应用的官方工具,包含了编译器、模拟器...

    最新LWUIT_1_5

    LWUIT( Lightweight UI Toolkit )是Java ME(J2ME)平台上的一种用户界面库,专为移动设备设计,提供了一种轻量级、高性能的界面构建工具。它旨在简化和美化在移动设备上的应用程序开发,使开发者能够创建具有丰富...

    J2ME LWUIT 之九宫图

    标题“J2ME LWUIT 之九宫图”指的是使用LWUIT库在J2ME平台上实现一个类似于iPhone上的九宫格布局的界面。九宫图通常是一种常见的布局方式,用于展示多个相互关联的小模块或应用图标,用户可以通过点击这些图标来启动...

    Lwuit实现九宫图特效程序

    本文将深入探讨如何利用LWUIT来实现一个引人注目的九宫图特效,帮助开发者创建出更具吸引力的移动应用界面。 首先,我们需要了解LWUIT的基本概念。LWUIT是Sun Microsystems(现已被Oracle收购)推出的一个轻量级...

    Lwuit入门程序测试一下Demo

    **LWUIT(Lightweight User Interface Toolkit)**是Java ME平台上的一个开源用户界面库,主要用于创建具有丰富图形效果和交互性的移动应用。这个库在早期的Java ME开发中非常流行,因为它允许开发者构建出与桌面...

    lwuit_demo_src.rar_DEMO_J2ME lwuit de_LWUIT_lwuit demo

    LWUIT( Lightweight UI Toolkit )是Java ME(Micro Edition)平台上的一款用户界面库,用于构建具有丰富图形和交互性的移动应用。这个"lwuit_demo_src.rar_DEMO_J2ME lwuit de_LWUIT_lwuit demo"压缩包包含的是...

    lwuit实例 lwuit j2me 界面

    LWUIT( Lightweight UI Toolkit)是Java ME平台上的一款开源用户界面框架,专为移动设备设计,用于构建具有丰富图形和互动性的应用程序。这个框架提供了一系列的组件和工具,使得开发者可以轻松创建出美观且功能...

    LWUIT.jar LWUIT.jar

    LWUIT.jarLWUIT.jarLWUIT.jarLWUIT.jarLWUIT.jarLWUIT.jar

    LWUIT的一个例子

    在“LWUIT的一个例子”中,我们将探讨如何利用LWUIT来实现一个模仿销售系统的应用。** 首先,LWUIT提供了一系列组件,如按钮、文本框、列表视图等,这些组件可以帮助开发者快速构建UI。在这个销售系统示例中,可能...

    J2ME+UI框架LWUIT开发手册

    5. **编写业务逻辑**:结合LWUIT的事件处理机制,实现用户交互逻辑和应用功能。 6. **测试与调试**:在模拟器或实际设备上运行并测试应用,调试可能出现的问题。 7. **打包发布**:最后,将应用打包成JAR或KJava...

    LWUIT_J4LChart

    而J4LChart 是一个专门用于LWUIT 的库,它扩展了LWUIT 的功能,使其能够创建各种类型的图表,如柱状图、饼图、线形图等,这对于数据可视化和信息展示非常有用。 LWUIT 是Sun Microsystems(现已被Oracle收购)开发...

    LWUIT1.3code.rar_LWUIT

    LWUIT( Lightweight UI Toolkit)是Sun Microsystems(现已被Oracle收购)为J2ME(Java 2 Micro Edition)平台设计的一款轻量级用户界面库,旨在提供一套高效、美观且功能丰富的图形用户界面组件。这个库在J2ME应用...

    lwuit.rar_J2ME lwuit_LWUIT_j2me_j2me LWU_九宫

    标题中的"lwuit.rar_J2ME lwuit_LWUIT_j2me_j2me LWU_九宫"表明这是一个与LWUIT相关的压缩包,内容可能包含了实现J2ME平台上九宫图功能的代码或资源。 九宫图是一种常见的界面布局方式,通常用于显示多个小视图,如...

    Hello LWUIT——LWUIT开发指南2

    LWUIT的事件处理机制也是其特色之一。与标准Java ME中的事件模型不同,LWUIT采用了一种更简洁的事件监听方式,使得代码更加简洁易读。开发者可以为组件添加监听器,监听用户的触摸、按键等操作,轻松实现交互功能。 ...

    LWUIT_MakeOver源码

    1. **List组件**:List是LWUIT中的核心组件之一,它允许用户通过列表形式查看和选择数据。开发者可以自定义列表项的外观和行为,包括文字、图片、颜色、字体等。在这个示例中,你将看到如何创建和填充List,以及如何...

    Hello LWUIT——LWUIT开发指南1

    LWUIT的核心优势在于其可定制性,开发者可以通过自定义主题来改变应用的整体外观和感觉,实现与设备原生界面风格的统一。LWUIT支持多种设备和操作系统,包括J2ME、Symbian、Blackberry等,这使得开发者可以编写一次...

    LWUIT_3_1英文原版.part1

    The Lightweight UI Toolkit (LWUIT) 是一个轻量级JavaME UI工具包。LWUIT类似Swing 的MVC架构, 支持多种布局(Layouts), 皮肤更换, 字体, 触摸屏, 动画效果, Rich控件, 3D集成, Painter, 模式对画框, I18N/L10N等...

    LWUIT,j2me教程

    LWUIT(Light Weight User Interface Toolkit)是一个专为Java ME平台设计的轻量级用户界面工具包。它为开发者提供了丰富的功能,包括类似Swing的MVC(Model-View-Controller)架构、多种布局管理方式、可更换的皮肤...

Global site tag (gtag.js) - Google Analytics