在編寫手機程序時,經常要進行各個屏幕間的切換。一開始不知道怎麼樣去做,這兩天看了一個例子,很簡單,但很能說明問題。總結一下。如有不妥之外,請高手糾正!
功能:在主程序中有多個按鈕,每一個按鈕對應一個功能,每一個功能要不同的屏幕(元素)表現出來。
實現:
一、主程序中必然定義了一個Display對像,如private Display display,它表示當前的屏幕。還有一些Displayable對像。如Form,TextField等都是Displayable的子類。在主程序中通過dipslay.serCurrent(Displayable實例名); 即可將當Displayable實例加入當前的屏幕。以下程序:
private Display display;
private Form form = new Form(“一個Form“);
public void startApp()
{
display.setCurrent(form);
}
作用是將form添加到當前的屏幕當中。
二、要想進行屏幕間的切換,只要將你想顯示的東東放到到主程序的display對象中即可。主程序中定義了一個display,則要在另一個屏幕(我姑且把它稱之為目標屏幕)中引用到主程序的display。
開發環境:Win2000 server+Eclipse+WTK2.1
用以下代碼說明:
MainMIDlet.java:主程序,一個標准的MIDlet。
import javax.microedition.midlet.MIDlet;
import javax.microedition.lcdui.*;
public class MainMIDlet extends MIDlet implements CommandListener {
private Display display;
private Form form = new Form("Wellcome!!");
private Command okCommand = new Command("OK",Command.OK,1);//選擇OK,換到下一個屏幕
private Form ns ;
private StringItem si = new StringItem("First Screen","~_~");
public MainMIDlet()
{
form.addCommand(okCommand);
form.append(si);
}
public void startApp() {
display = Display.getDisplay(this);
display.setCurrent(form);
form.setCommandListener(this);//對form加入CommandListener
}
public void pauseApp() {
}
public void destroyApp(boolean b){
}
public void commandAction(Command c,Displayable s)
{
if(c==okCommand)
{
ns = new NextScreen(display,form);//最關鍵的地方在這裡:)