2011-07-04 4 views
1

別のフォームを呼び出す方法は? form.show()メソッドを使用すると、別のフォームのコンポーネントは表示されません。
例...J2MEではLWUITライブラリを使用しています。別のフォームを呼び出すには?

FirstForm.java

public class FirstForm extends MIDlet implements ActionListener 
{ 
    Form frm_first = new Form("First"); 
    public Command cmd_Login; 
    public void startApp() 
    { 
     Display.init(this); 
     cmd_Login = new Command("Login"); 
     frm_first.addComponent(cmd_login); 
     ...... 
    } 
    public void pauseApp() {} 

    public void destroyApp(boolean unconditional) {} 

    public void actionPerformed(ActionEvent ae) 
    { 
     Command cmd = ae.getCommand(); 
     String strcmdName = cmd.getCommandName(); 

     if (strcmdName.equals("Login")) 
     { 
      //how to call Login Form 
     } 
    } 
} 

Login.java

public class Login extends Form implements ActionListener 
{ 
    Form frm_Login = new Form("Login"); 
    Button btn_Login = new Button("Login"); 
    public Login() 
    { 
     .... 
     . .... 
    } 
} 

答えて

2

まず、あなたのクラスFirstFormでフォームを作成する必要があります。 FirstFormでimplements CommandListenerないのActionListenerする必要がfrm.setCommandListener(this); &を形成するために、コマンドリスナーを設定し、その後frm.addCommand(cmd_Login); のような形式でコマンドをあなたのcmd_Loginを追加し Form frm=new Form("First Form");ように。 次にpublic void commandAction(Command c, Displayable d) {に2番目のフォームに進むコードを記述する必要があります。 & Loginクラスで気づいたことの1つは、常にフォームクラス&をLoginクラスでFormオブジェクトを作成することです。拡張クラスフォームを使用している場合は、Formオブジェクトを作成しないでください。 おかげ

+0

リピートyaar.Inログインフォームのおかげで、ログインコンストラクタのコンポーネントのすべての定義を定義する必要があります。解決策がない場合は、いくつかの例を挙げてください。どうもありがとうございました –

+0

ほとんど必要です........ –

+0

もう1つのオプションはありません –

1

は単に

new Login().show(); 
+0

リピートのためにちょっとNirmalありがとう。 –

+0

ログインフォームでは、ログインコンストラクタでコンポーネントの定義をすべて定義する必要があります。解決策がない場合は、いくつかの例を挙げてください。ありがとうございます –

0

私は別の内からフォームを呼び出すために発見した最善の方法を使用して、リスナーを実装した後、これを使用することです:showForm("name of Form", null);

もう一つの方法は、別のフォームを呼び出すために、コンポーネントアクション内からは次のようになります。showContainer("name of Form",c, null);

0

この行は、Display.init(this)の前に呼び出されます。したがって、あなたは例外を取得し、何も動作しません。

Form frm_first = new Form("First"); 

Display.init(this)コードの後に​​初期化コードを移動します。

関連する問題