首 页 | 网页模板 | 教程 | 源码下载 | 书籍下载 | 图片素材 | 字体 | JAVA特效 | FLASH源码 | 软件 | 矢量 | 论坛 | 其它 |
设为主页
加入收藏
联系站长
平面设计 | 网页制作 | 程序编写 | 数 据 库 | 媒体动画 | 网络冲浪 | 服务器相关 |
当前在线
广告:P4服务器电信机房6999/年即送产权 | 疾风下载
我的J2ME编程练习(7)——Canvas2
2005-4-26 6:54:54  作者:模板天下收集整理  来源:未知 网友评论 0 条 论坛
  /*
 * 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 {
    private ChoiceGroup faceChoice;
    private ChoiceGroup styleChoice;
    private ChoiceGroup sizeChoice;
    
    private Command okCommand;
    private Command exitCommand;
    private Command backCommand;
    
    private TextBox faceTextBox;
    private TextBox styleTextBox;
    private TextBox sizeTextBox;
    
    private Form choiceForm;
    
    private Display aDisplay;
    
    private MyCanvas canvas;
    
    int face;
    int size;
    int style;
    
    public Canvas2let(){
        choiceForm=new Form("Select Font");
        
        faceChoice=new ChoiceGroup("外观",Choice.EXCLUSIVE);
        faceChoice.append("PROPORTIONAL",null);
        faceChoice.append("MONOSPACE",null);
        faceChoice.append("SYSTEM",null);
        
        styleChoice=new ChoiceGroup("风格",Choice.MULTIPLE);
        styleChoice.append("PLAIN",null);
        styleChoice.append("BOLD",null);
        styleChoice.append("ITALIC",null);
        styleChoice.append("UNDERLINED",null);
        
        sizeChoice=new ChoiceGroup("大小",Choice.EXCLUSIVE);
        sizeChoice.append("SMALL",null);
        sizeChoice.append("MEDIUM",null);
        sizeChoice.append("LARGE",null);
        
        exitCommand=new Command("退出",Command.EXIT,1);
        okCommand=new Command("确定",Command.OK,1);
        backCommand=new Command("后退",Command.BACK,2);
        
        choiceForm.append(faceChoice);
        choiceForm.append(styleChoice);
        choiceForm.append(sizeChoice);
        
        choiceForm.addCommand(exitCommand);
        choiceForm.addCommand(okCommand);
        choiceForm.setCommandListener(this);
        
        canvas=new MyCanvas();
    }
    public void startApp() {
        aDisplay=Display.getDisplay(this);
        aDisplay.setCurrent(choiceForm);
    }
    
    public void pauseApp() {
    }
    
    public void destroyApp(boolean unconditional) {
    }
    
    public void commandAction(Command c ,Displayable d){
        if (c==exitCommand){
            destroyApp(false);
            notifyDestroyed();
        }
        else {
            //select the face and size
            face=faceChoice.getSelectedIndex();
            switch(face){
                case 0: face=Font.FACE_PROPORTIONAL;break;
                case 1: face=Font.FACE_MONOSPACE;break;
                case 2: face=Font.FACE_SYSTEM;break;
            }
            
            size=sizeChoice.getSelectedIndex();
            switch(size){
                case 0:size=Font.SIZE_SMALL;break;
                case 1:size=Font.SIZE_MEDIUM;break;
                case 2:size=Font.SIZE_LARGE;break;
            }
            
            //select the style
            boolean[] styleSelect =new boolean[4];
            for(int i=0;i<4;i++){
                if (styleChoice.isSelected(i)&&i==0){
                    style |= Font.STYLE_PLAIN;
                }
                else if (styleChoice.isSelected(i)&&i==1){
                    style |=Font.STYLE_BOLD;
                }
                else if (styleChoice.isSelected(i)&&i==2){
                    style |=Font.STYLE_ITALIC;
                }
                else if (styleChoice.isSelected(i)&&i==3){
                    style |=Font.STYLE_UNDERLINED;
                }
                
            }
            
            //canvas=new MyCanvas();
            aDisplay.setCurrent(canvas);
        }
    }
    
    class MyCanvas extends Canvas implements CommandListener{
        
        public MyCanvas(){
            
            addCommand(backCommand);
            setCommandListener(this);
        }
        
        public void paint(Graphics g){
            g.setColor(0xFFFFFF);
            g.fillRect(0,0,getWidth(),getHeight());
            
            g.setColor(0);
            String s="Hello World";
            Font f=Font.getFont(face,style,size);
            g.setFont(f);
            g.drawString(s,150,250,Graphics.RIGHT|Graphics.BOTTOM);
        }
        
        public void commandAction(Command c ,Displayable d){
            if (c==backCommand){
                aDisplay.setCurrent(choiceForm);
            }
        }
        
        
        
    }
}
这个程序主要是加深对Canvas的Font的认识。
1.MIDlet类的构造函数应该是public Canvas2let()而不应该是public void Cancas2let()。因为加了void就不会返回该类的对象,导致程序运行后没有反映。这是一个教训。
2.在Canvas中,需要使用代码
            g.setColor(0xFFFFFF);
            g.fillRect(0,0,getWidth(),getHeight());
来清除上一个界面。然后再使用 g.setColor(0);来设置绘画颜色。
3.关于这一点,应该这样理解:
既然使用了低级界面,那么就意味着屏幕上的一切都归你管,你有最大的权利。但你也有相应的义务,清除屏幕的工作自然也要你来做
共分1页  [1] 
>> 相关文章

关于网站 | 客服中心 | 服务条款 | 友情链接 | 广告联系 | 本站历程 | 网站导航

吉ICP备05000107号