J2ME中的Canvas切换

时间:2012-03-03 14:08:09

标签: java-me midp lcdui

我有一个扩展canvas的类。我再创建了一个canvas类。但是我无法在它们之间切换。

是否可以在J2ME中切换画布?

1 个答案:

答案 0 :(得分:2)

import ...
public class MyMIDlet extends MIDlet{
    ...
    final Canvas1 c1;
    final Canvas2 c2;
    ...
    public MyMIDlet(){
        c1 = new Canvas1(this);
        c2 = new Canvas2(this);
    }
    ...
}

import ...
public class Canvas1 extends Canvas implements CommandListener{
    MyMIDlet myMidlet;
    Display disp;
    Command switchDisp;
    ...
    /**
    *constructor
    */
    public Canvas1(MyMIDlet myMidlet){
        this.MyMIDlet = myMidlet;
        disp = myMidlet.getDisplay();
        switchDisp = new Command("switch", Command.SCREEN, 0);
        this.addCommand(switchDisp);
        this.setCommandListener(this);
    }
    ...
    public void paint(Graphics g){
        g.setColor(255,255,255);
        g.drawString("canvas1", 0, 0, 0);
    }
    ...
    public void commandAction(Command cmd, Displayable displayable){
        disp.setCurrent(myMidlet.c2);
    }
}

import ...
public class Canvas2 extends Canvas implements CommandListener{
    MyMIDlet myMidlet;
    Display disp;
    Command switchDisp;
    ...
    /**
    *constructor
    */
    public Canvas1(MyMIDlet myMidlet){
        this.MyMIDlet = myMidlet;
        disp = myMidlet.getDisplay();
        switchDisp = new Command("switch", Command.SCREEN, 0);
        this.addCommand(switchDisp);
        this.setCommandListener(this);
    }
    ...
    public void paint(Graphics g){
        g.setColor(255,255,255);
        g.drawString("canvas2", 0, 0, 0);
    }
    ...
    public void commandAction(Command cmd, Displayable displayable){
        disp.setCurrent(myMidlet.c1);
    }
}   

可显示对象是能够放置在显示器上的对象。 Displayable类实现了Displayable接口 Display类是为每个活动MIDlet实例化的显示管理器,并提供检索有关设备显示功能的信息的方法。通过调用Display.setCurrent()方法使画布可见 画布实现了Displayable接口 可显示类是可以在设备屏幕上显示的UI元素,而Display类抽象实际设备屏幕的显示功能并使其可供您使用。它提供了显示或更改要显示的当前UI元素的方法。因此,MIDlet使用Display类的setCurrent(可显示元素)方法在Display上显示可显示的UI元素。