我的J2ME編程練習(5)——Canvas

來源:互聯網
上載者:User
編程  

的/*
 * 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介面,以實現後退等功能。




相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。