我的J2ME编程练习(5)——Canvas

编程

 
的/*
 * Canvaslet.java
 *
 * Created on 2005年4月18日, 下午9:41
 */

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

/**
 *
 * @author  Administrator
 * @version
 */
public class Canvaslet extends MIDlet implements CommandListener{
   
   private Display aDisplay;
   private MyCanvas myCanvas;
   private Command okCommand;
   private Command exitCommand;
   private List aList;
   private Font f;
  
   public Canvaslet(){
       okCommand=new Command("OK",Command.OK,1);
       exitCommand=new Command("EXIT",Command.EXIT,1);
       aList=new List("Font",Choice.EXCLUSIVE);
       aList.append("Small",null);
       aList.append("Medium",null);
       aList.append("Large",null);
      
       myCanvas=new MyCanvas();
      
       aList.addCommand(okCommand);
       aList.addCommand(exitCommand);
       aList.setCommandListener(this);
      
   }
   
    public void startApp() {
       
        aDisplay=Display.getDisplay(this);
        aDisplay.setCurrent(aList);
              
    }
   
    public void pauseApp() {
    }
   
    public void destroyApp(boolean unconditional) {
    }
   
    public void commandAction(Command c, Displayable d){
        int i=aList.getSelectedIndex();
       if(c==exitCommand){
            destroyApp(false);
            notifyDestroyed();
        }
        else if (c==okCommand);{
            if(i==0){
                myCanvas.setSize(Font.SIZE_SMALL);
               
            }
            else if (i==1){
                myCanvas.setSize(Font.SIZE_MEDIUM);
            }
            else if (i==2){
                myCanvas.setSize(Font.SIZE_LARGE);
            }
            aDisplay.setCurrent(myCanvas);
        }
    }
   
    class MyCanvas extends Canvas implements CommandListener {
        private Command exitcmd;
        public MyCanvas(){
            exitcmd=new Command("后退",Command.BACK,1);
            addCommand(exitcmd);
            setCommandListener(this);
        }
       
        private void setSize(int size){
            f=Font.getFont(Font.FACE_SYSTEM,Font.STYLE_BOLD,size);
        }
        public void paint(Graphics g){
            String s ="Hello";
            g.setColor(0x00808080);
            g.setFont(f);
            g.drawString(s,getWidth()/2,getHeight()/2,Graphics.TOP|Graphics.LEFT);
            g.drawLine(0,0,100,100);
        }
        public void commandAction(Command c ,Displayable d){
            if(c==exitcmd){
                aDisplay.setCurrent(aList);
            }
        }
    }
}

这个程序的编写过程很不顺利,呵呵,毕竟是新手啊。

1.Font

对于Canvas中的字体,我以前一直不太熟悉。通过这次编程,我了解到,要得到一个字体对象,需要通过Font f = Font.getFont(int face, int style, int size)来得到。

2.含Canvas的MIDlet的一般写法

先写出MIDlet,然后再写一个继承自Canvas的内部类,在该类内部实现public void paint(Graphics g){}方法。在display时会自动调用paint方法。

3.在Canvas的子类中,可以使用Command和CommandListener接口,以实现后退等功能。

时间: 2025-01-21 09:52:31

我的J2ME编程练习(5)——Canvas的相关文章

学习J2ME编程需要掌握的七种技术

编程 学习J2ME编程需要掌握的七种技术 J2ME编程是Java在智能家电领域的应用,主要包含以下技术: 1. 高级用户界面 高级用户界面是指J2ME编程中用到的Form(窗体).TextBox(文本框).List(列表框)和Alert(提示信息框)等的使用,以及其中的一些控件的使用,当然也包括相应的事件处理.应用在一般的如登陆窗体.关于窗体和提示等. 2. 低级用户界面 低级用户界面指Canvas类和Graphics类等的使用,以及相应的事件处理,应用与游戏编程以及特殊界面的绘制等. 3. 记

在J2ME编程中使用Nokia的中文模拟器

在J2ME编程中,经常需要使用Nokia系列的模拟器,但是Nokia Developer's Suit for J2ME中提供的三个模拟器都无法正确的显示中文,在程序开发过程中,大家经常要为这个事情头疼. 下面介绍几个可以在编程中支持中文显示的Nokia模拟器: 1.7210模拟器 如果大家进行是Nokia S40 1.0版本的开发的话,可以使用7210的模拟器,下载地址为:http://www.forum.nokia.com/main/0,6566,034-31,00.html 安装完成以后,

Android编程之绘图canvas基本用法示例

本文实例讲述了Android编程之绘图canvas基本用法.分享给大家供大家参考,具体如下: MainActivity的代码如下: package example.com.myapplication; import android.os.Bundle; import android.app.Activity; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedIns

J2ME编程最佳实践之屏幕导航

编程|导航 除了游戏程序,在通常的MIDP应用程序中,通常会有很多个Screen或Canvas,这些屏幕一般靠命令来实现切换,比如用户点击"Next"应该跳到下一屏,点击"Back"应该返回到上一屏.当屏幕数量相当可观时,如何在各个屏幕之间导航就值得好好考虑了. 经典的MVC模式可用于屏幕导航,Model用于存储应用程序数据,而View则是各个Displayable对象,Controller需要单独的一个类实现.由于MIDlet类本身在生命周期内就只有一个实例,因此

我的J2ME编程练习(7)——Canvas2

编程   /* * Canvas2let.java * * Created on 2005年4月19日, 下午5:27 */import javax.microedition.midlet.*;import javax.microedition.lcdui.*;/** * * @author  Administrator * @version */public class Canvas2let extends MIDlet implements CommandListener {    priv

J2ME编程最佳实践之联网开发

编程 由于无线设备所能支持的网络协议非常有限,仅限于HTTP,Socket,UDP等几种协议,不同的厂家可能还支持其他网络协议,但是,MIDP 1.0规范规定,HTTP协议是必须实现的协议,而其他协议的实现都是可选的.因此,为了能在不同类型的手机上移植,我们尽量采用HTTP作为网络连接的首选协议,这样还能重用服务器端的代码.但是,由于HTTP是一个基于文本的效率较低的协议,因此,必须仔细考虑手机和服务器端的通信内容,尽可能地提高效率. 对于MIDP应用程序,应当尽量做到: 1.发送请求时,附加一

J2ME编程最佳实践之灵活的RMS应用

编程 MIDP应用程序的标准持久化方案就是使用RMS.RMS类似于一个小型数据库,RecordStore相当于数据库的表,每个"表"由若干记录(Record)构成,一条记录就是一个用int表示的记录号RecordID和用byte[]表示的内容.记录号可以看作是"主键",byte[]数组存储内容. RMS提供的记录操作可以实现根据ID直接获得记录,或者枚举出一个表中的所有记录. 枚举记录是非常低效的,因为只能比较byte[]数据来确定该记录是否是所需的记录.通过ID获

我的J2ME编程联系(3)——Gauge

编程 /* * gaugelet.java * * Created on 2005年4月15日, 下午5:19 */ import javax.microedition.midlet.*;import javax.microedition.lcdui.*; /** * * @author  Administrator * @version */public class gaugelet extends MIDlet implements CommandListener{        priva

我的J2ME编程练习(5)——ImageItem

编程 /* * imageItemlet.java * * Created on 2005年4月17日, 下午8:56 */ import javax.microedition.midlet.*;import javax.microedition.lcdui.*; /** * * @author  Administrator * @version */public class imageItemlet extends MIDlet implements CommandListener,ItemC