`
fanguanghui
  • 浏览: 100002 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

J2ME GUI实战之五 ----------LWUIT的绘图功能

 
阅读更多
<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>本文来自:http://blog.csdn.net/hellogv/ ,转载必须注明出处!
首先先给出本例的效果图:


首先,需要说明一下LWUIT的控件:
LWUIT的控件,可以算是做得很全,他的设计模式跟J2SE有点类似,而做过J2ME的人要掌握也不需要长时间。LWUIT的控件,是原来高级控件与低级控件的集合,并加入了更多元素,因此你可以在用高级控件的同时,很自然地实现低级控件的功能。例如本文中的绘图功能,就是如此!
在本例中,依然使用大家熟悉的void paint(Graphics g) 函数,作为绘图的主体,然而paint的“上司”(绘图类)并不再是继承Canvas,而是继承Component,并且继承Component之后要这 样被调用:form.addComponent(BorderLayout.CENTER, new Painting());//Painting就是“上司”。可见,在LWUIT里,已经没低级控件这个概念,但是有这个用法-----传统的绘图类也作为控件类,被调用了。或许,你想用回原来的javax.microedition.lcdui.Graphics,但是lcdui的Graphics和Display 与 LWUIT的Graphics和Display不兼容(LWUIT多了很多方法),因此“新欢旧爱不能兼得”!

OK,先给出调用绘图功能的代码:
  1. privateclassButtonActionListenerimplementsActionListener{
  2. publicvoidactionPerformed(ActionEventevt){
  3. Stringsel_button=((Button)(evt.getSource())).getText();//取得所选按钮的名称
  4. if(sel_button.equals("Image1"))
  5. newAnimationDemo().form.show();
  6. elseif(sel_button.equals("Image2"))
  7. newPaintingDemo().form.show();
  8. }
  9. }
接着再给出绘图功能实现的代码:
  1. /*
  2. *Copyright?2008SunMicrosystems,Inc.Allrightsreserved.
  3. *Useissubjecttolicenseterms.
  4. *
  5. */
  6. packagecom.sun.lwuit.uidemo;

  7. importcom.sun.lwuit.Command;
  8. importcom.sun.lwuit.Component;
  9. importcom.sun.lwuit.Form;
  10. importcom.sun.lwuit.Graphics;
  11. importcom.sun.lwuit.events.ActionEvent;
  12. importcom.sun.lwuit.events.ActionListener;
  13. importcom.sun.lwuit.layouts.BorderLayout;


  14. /**
  15. *Demonstratessimpleanimationbothstaticandmanual
  16. *
  17. *@authorShaiAlmog
  18. */
  19. publicclassPaintingDemoextendsFormimplementsActionListener{
  20. publicFormform=newForm("PaintingDemo");
  21. privateCommandbackCommand=newCommand("Back",1);
  22. privateCommandnextCommand=newCommand("next",2);
  23. PaintingDemo()
  24. {
  25. form.addCommand(backCommand);
  26. form.addCommand(nextCommand);
  27. form.setCommandListener(this);
  28. form.setLayout(newBorderLayout());
  29. form.addComponent(BorderLayout.CENTER,newPainting());

  30. }
  31. publicclassPaintingextendsComponent{
  32. privateintw;
  33. publicvoidpaint(Graphicsg){
  34. g.setColor(0x000000);
  35. g.fillRect(0,0,this.getWidth(),this.getHeight());
  36. w=getWidth();
  37. drawSqrt1(g);
  38. g.setColor(0xffffff);
  39. g.drawString("hellogv",12,33);

  40. }
  41. privatevoiddrawSqrt1(Graphicsg){
  42. longstart=System.currentTimeMillis();

  43. intcenterY1=50;

  44. //绘制X轴
  45. //设置绘图颜色为蓝色
  46. g.setColor(0x0000FF);
  47. g.drawLine(0,centerY1,w,centerY1);

  48. //设置绘图颜色为白色
  49. g.setColor(0xFFFFFF);
  50. intoldX=0;
  51. intoldY1=centerY1;

  52. inty1;
  53. for(inti=1;i<w;i++){
  54. //放大3倍
  55. y1=centerY1-(int)(3*Math.sqrt(i));
  56. g.drawLine(oldX,oldY1,i,y1);
  57. oldX=i;
  58. oldY1=y1;
  59. }
  60. longtime=System.currentTimeMillis()-start;
  61. System.out.println("drawSqrt1Runtime:"+time);
  62. }

  63. }
  64. publicvoidactionPerformed(ActionEventarg0){
  65. if(arg0.getCommand()==backCommand)
  66. {
  67. UIDemoMIDlet.backToMainMenu();
  68. }
  69. elseif(arg0.getCommand()==nextCommand)
  70. {
  71. }
  72. }
  73. }
OK,还是那句,希望大家多多支持LWUIT,让它可以做得更加好!
分享到:
评论

相关推荐

    J2ME游戏编程-玛莉赛跑

    为了进行J2ME开发,我们需要安装支持J2ME的插件,如MOTODEV Studio或NetBeans,这些插件提供了J2ME项目创建、模拟器运行和调试等功能。 1. **项目创建**:在Eclipse中创建J2ME项目,选择合适的手机配置文件(如CLDC...

    郭克华J2me讲课源代码

    2. **图形用户界面(GUI)**:J2ME中的用户界面设计通常基于轻量级用户界面(LWUIT)或早期的WTK( Wireless Toolkit)组件。源代码可能包含各种按钮、文本框、列表等组件的使用示例,以及布局管理器的实现。 3. **...

    J2ME开发教程

    而框架则是在特定配置之上添加更具体的设备功能,如MIDP(Mobile Information Device Profile)用于移动设备应用开发。 **二、KJava与J2ME** KJava是早期的J2ME实现,它直接运行在设备的硬件层上。随着MIDP的发展...

    JAVA基于J2ME的手机游戏开发(论文+源代码)

    Java基于J2ME的手机游戏开发是一个广泛的领域,涉及到移动设备上的软件开发技术,特别是针对早期功能手机的游戏创作。J2ME(Java 2 Micro Edition)是Java平台的一个子集,专门为资源有限的嵌入式设备如手机和PDA...

    ToolsPro.rar_J2ME_Java_

    J2ME游戏开发通常涉及使用MIDP的Canvas类来创建自定义绘图,以及使用LWUIT(Lightweight UI Toolkit)或MIDP GUI组件来构建交互界面。游戏逻辑可能需要利用线程管理和事件处理。对于更复杂的游戏,可能还需要使用...

Global site tag (gtag.js) - Google Analytics