J2ME学习(四)——将MIDlet和界面分离(比较基础) 
  
       虽然使用面向对象的思想进行J2ME的编程,会增加代码量(增加发布文件的大小)和提高代码的复杂性。但是为了代码的可维护性和可扩展性,现在绝大多数的程序还是将界面和逻辑分离开来,下面先说明一下如何将MIDlet主类和界面分离。 
       在界面和MIDlet中,需要交换的系统内容主要有两部分:1、Display对象;2、MIDlet中的退出处理。 
       示例代码如下: 
       package testmidlet; 
  
import javax.microedition.midlet.*; 
import javax.microedition.lcdui.*; 
  
public class TestMIDlet extends MIDlet { 
  private static TestMIDlet instance; 
  private LoginForm displayable = new LoginForm(); 
  
  /** Constructor */ 
  public TestMIDlet() { 
    instance = this; 
  } 
  
  /** Main method */ 
  public void startApp() { 
    Display.getDisplay(this).setCurrent(displayable); 
  } 
  
  /** Handle pausing the MIDlet */ 
  public void pauseApp() { 
  } 
  
  /** Handle destroying the MIDlet */ 
  public void destroyApp(boolean unconditional) { 
  } 
  
  /** Quit the MIDlet */ 
  public static void quitApp() { 
    instance.destroyApp(true); 
    instance.notifyDestroyed(); 
    instance = null; 
  } 
  
} 
  
package testmidlet; 
  
import javax.microedition.lcdui.*; 
  
public class LoginForm extends Form implements CommandListener {
  
    private Display display;   /** Constructor */ 
  public LoginForm(Display display) { 
    super("Test");
  
    this.display = display;     setCommandListener(this); 
    // add the Exit command 
    addCommand(new Command("Exit", Command.EXIT, 1)); 
  } 
  
  /**Handle command events*/ 
  public void commandAction(Command command, Displayable displayable) { 
    /** @todo Add command handling code */ 
    if (command.getCommandType() == Command.EXIT) { 
// stop the MIDlet 
      TestMIDlet.quitApp(); 
    } 
  } 
}
  其中display对象可以通过构造方法进行传递,退出方法可以通过方法调用来执行.这样,你的代码就能实现MIDlet类和界面分离了.  
 
  |