J2ME里界面的相互跳转

来源:互联网 发布:coc兵营升级数据 编辑:程序博客网 时间:2024/06/05 07:19
import java.util.Stack;

import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class Midlet extends MIDlet {
    
    
private static Midlet _instance = null;
    
    
private Display _display = null;
    
    
/**
     * 程序一开始显示的界面
     
*/

    
private LoginForm _loginForm = null;

    
/**
     * 堆栈,用于存储界面,适用于上下翻页,不适用于跳转到指定的页面
     
*/

    
private Stack _uiStack = new Stack();
    
    
    
public Midlet() {
        _instance 
= this;
        _display 
= Display.getDisplay(this);
        _loginForm 
= new LoginForm(this);
    }


    
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {}

    
protected void pauseApp() {}

    
protected void startApp() throws MIDletStateChangeException {
        forward(
new LoginList());        //跳转到需要显示的界面
    }

    
    
/**
     * 跳出(不显示)当前的界面
     
*/

    
public static void jumpBack(){
        _instance._uiStack.pop();
    }

    
    
/**
     * 返回到上一个界面
     
*/

    
public static void goBack(){
        _instance._uiStack.pop();
        Object obj 
= _instance._uiStack.peek();
        _instance._display.setCurrent((Displayable)obj);
    }

    
    
/**
     * 跳转到下一个界面
     * 
@param next 要显示的界面
     
*/

    
public static void forward(Displayable next){
        _instance._uiStack.push(next);
        _instance._display.setCurrent(next);
    }

    
    
/**
     * 返回Midlet的实例
     
*/

    
public static Midlet getMidlet(){
        
return _instance;
    }

    
    
/**
     * 退出程序
     
*/

    
public void quit() {
        
try{
            
this.destroyApp(true);
            
this.notifyDestroyed();
        }
catch(MIDletStateChangeException mce){
            
        }

        
    }

    
}