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.     private class ButtonActionListener implements ActionListener {
2.         public void actionPerformed(ActionEvent evt) {
3.           String sel_button=((Button)(evt.getSource())).getText();//取得所选按钮的名称
4.           if(sel_button.equals("Image 1"))
5.               new AnimationDemo().form.show();
6.           else if(sel_button.equals("Image 2"))
7.               new PaintingDemo().form.show();
8.         }
9.     }
1. /*
2.  * Copyright ?2008 Sun Microsystems, Inc. All rights reserved.
3.  * Use is subject to license terms.
4.  *
5.  */
6. package com.sun.lwuit.uidemo;
7.
8. import com.sun.lwuit.Command;
9. import com.sun.lwuit.Component;
10. import com.sun.lwuit.Form;
11. import com.sun.lwuit.Graphics;
12. import com.sun.lwuit.events.ActionEvent;
13. import com.sun.lwuit.events.ActionListener;
14. import com.sun.lwuit.layouts.BorderLayout;
15.
16.
17. /**
18.  * Demonstrates simple animation both static and manual
19.  *
20.  * @author Shai Almog
21.  */
22. public class PaintingDemo   extends Form implements ActionListener {
23.     public Form form = new Form("PaintingDemo");
24.     private  Command backCommand = new Command("Back", 1);
25.     private  Command nextCommand = new Command("next", 2);
26.     PaintingDemo()
27.     {
28.             form.addCommand(backCommand);
29.             form.addCommand(nextCommand);
30.             form.setCommandListener(this);
31.             form.setLayout(new BorderLayout());
32.             form.addComponent(BorderLayout.CENTER, new Painting());
33.
34.     }
35.   public class Painting extends Component{
36.         private int w;
37.    public void paint(Graphics g) {
38.           g.setColor(0x000000);
39.           g.fillRect(0, 0, this.getWidth(), this.getHeight());
40.           w = getWidth();
41.           drawSqrt1(g);
42.           g.setColor(0xffffff);
43.           g.drawString("hellogv", 12, 33);
44.
45.       }
46.            private void drawSqrt1(Graphics g) {
47.             long start = System.currentTimeMillis();
48.
49.             int centerY1 = 50;
50.
51.             //绘制X轴
52.             //设置绘图颜色为蓝色
53.             g.setColor(0x0000FF);
54.             g.drawLine(0, centerY1, w, centerY1);
55.
56.             //设置绘图颜色为白色
57.             g.setColor(0xFFFFFF);
58.             int oldX = 0;
59.             int oldY1 = centerY1;
60.
61.             int y1;
62.             for(int i=1;i<w;i++) {
63.                 //              放大3倍
64.                 y1 = centerY1 - (int)(3*Math.sqrt(i));
65.                 g.drawLine(oldX, oldY1, i, y1);
66.                 oldX = i;
67.                 oldY1 = y1;
68.             }
69.             long time = System.currentTimeMillis() - start;
70.             System.out.println("drawSqrt1 Runtime: " + time);
71.         }
72.
73.   }
74.     public void actionPerformed(ActionEvent arg0) {
75.         if(arg0.getCommand()==backCommand)
76.         {
77.             UIDemoMIDlet.backToMainMenu();
78.         }
79.         else if(arg0.getCommand()==nextCommand)
80.         {
81.           
82.         }
83.     }
84. }
OK,还是那句,希望大家多多支持LWUIT,让它可以做得更加好!

转载于:https://blog.51cto.com/zhaohaiyang/436699

LWUIT的绘图功能相关推荐

  1. Matplotlib基础绘图功能 — 以折线图为例

    1 完善原始折线图 - 给图形添加辅助功能 为了更好地理解所有基础绘图功能,通过天气温度变化的绘图来融合所有的基础API使用 需求:画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在1 ...

  2. java使用重绘实现拖动_原生JS使用Canvas实现拖拽式绘图功能

    一.实现的功能 1.基于oop思想构建,支持坐标点.线条(由坐标点组成,包含方向).多边形(由多个坐标点组成).圆形(包含圆心坐标点和半径)等实体 2.原生JavaScript实现,不依赖任何第三方j ...

  3. Qt 2D绘图功能简单总结

    文章目录 Qt 2D绘图功能简单总结 Qt 2D绘图功能简单总结 Qt 的绘图功能非常强大,它可以绘制一切想要的图形,从最简单的一条直线到其他任何复杂的图形,还可以用来绘制文本和图片. Qt的绘图系统 ...

  4. 绝了!Pandas绘图功能

    柱状图箱线图密度图条形图散点图折线图保存绘图总结 可视化是用来探索性数据分析最强大的工具之一.Pandas库包含基本的绘图功能,可以让你创建各种绘图.Pandas中的绘图是在matplotlib之上构 ...

  5. 熊猫tv新功能介绍_您应该知道的4种熊猫绘图功能

    熊猫tv新功能介绍 Pandas is a powerful package for data scientists. There are many reasons we use Pandas, e. ...

  6. 【Qt教程】3.4 - Qt5 QPainter绘图事件、绘图功能

    1. QPainter绘图事件 简介 Qt的绘图系统允许使用现同的API在屏幕和其他打印设备上进行绘制.整个绘图系统基于 QPainter.QPaintDevice.QPaintEngine 三个类. ...

  7. r语言liftchart_R语言强大的绘图功能--附数据和代码

    Visualization视觉化,是R语言非常强大的一个特性.R在统计学软件圈能快速崛起,画图功能做出很大贡献.今天我们就用最简单的方式,用R自带的绘图包(graphics),基于R自带的数据,向大家 ...

  8. ios绘图_使用Pencilkit轻松将绘图功能添加到ios应用

    ios绘图 The PencilKit framework was introduced by Apple in iOS 13. It gives developers the ability to ...

  9. python画空心圆图_OpenCV-Python系列之绘图功能

    在图像中我们经常需要用到将某个局部特征画出来,比如物体检测,物体追踪等等,今天来看看有哪些好玩的绘图工具吧! 画线 首先要为画的线创造出环境,就要生成一个空的黑底图像.我们使用numpy进行实验:im ...

  10. MFC基于单文档实现绘图功能(线段,矩形,椭圆,圆,铅笔,橡皮),保姆式教程

    MFC基于单文档实现绘图功能(线段,矩形,椭圆,圆,铅笔,橡皮),保姆式教程 需要手写的代码都在图片下面,实际内容不多------嘻嘻. 1.打开VS–新建项目–选择mfc应用程序 2.选择单文档,m ...

最新文章

  1. 运动是性价比最高的投资
  2. UIImageView 与 UIButton的区别
  3. 自动驾驶 | MINet:嵌入式平台上的实时Lidar点云数据分割算法,速度可达 20-80 FPS!...
  4. 一文详解「群体机器人」中的「实体进化」到底是什么?
  5. 一文带你学会基于SpringAop实现操作日志的记录
  6. 华为服务器bios配置性能,高级电源管理配置 - 华为服务器 Brickland平台 BIOS 参数参考 30 - 华为...
  7. Clone Graph
  8. AI+云 华为开启智能时代新纪元
  9. 四管前级怎么去掉高低音音调_TDG Audio达芬奇:什么是前级,后极?
  10. php批量修改标题,帝国CMS批量修改信息标题的方法
  11. PHP在Tomcat中CSS出错,tomcat找不到css怎么办
  12. 低秩矩阵补全算法matlab实现,推荐系统中的矩阵补全算法
  13. linux命令fsck和fcsk,在ubuntu中shutdown和reboot的各参数的作用是什么? | 星尘
  14. 古风手机壁纸,国潮的你不可错过!
  15. 投毒、伪装、攻击,DNS 欺骗和钓鱼网站如何一步步诱人掉入陷阱?
  16. RSTP原理和新增特性
  17. Android应用开发初印象
  18. matlab 点顺时针排序,怎样对平面中的点进行顺时针或者逆时针排序
  19. matlab set函数
  20. LabVIEW编更改研华数字板卡中DIO方向 例程与相关资料

热门文章

  1. python 3 导入 迭代判断
  2. Visual Studio Debug Practice
  3. UITableView 的横向滑动实现
  4. Android开发 Android Studio2.0 教程从入门到精通Windows版 - 入门篇
  5. 你一点要认真了解 C++中的模式匹配介绍
  6. hdu5800_dp
  7. 代码设计的几个基础技巧
  8. 一些关于java的笔记
  9. 将网页和文档的背景改为绿色来保护眼睛
  10. 推荐几本书,再送66本书【包邮到家】