1
public class StateMachine extends StateMachineBase {

public Container con1;

protected void beforeMainForm(Form f) {
           con1 = findMenucon(f);<Br>
           super.beforeMainForm(f);<br>
  }
}

//class mainmidlet()
public void run() {

    try {
        //new StateMachine("/App.res");
        new mainform("/App.res");
    } catch (Exception ex) {
        ex.printStackTrace();
    }
}


class mainform  implements ActionListener{

Vector bname;
Button[] b;
String mainmenu=null;
Form frm;
mainform(String string) {

try {
Resources res = Resources.open(string);
UIManager.getInstance().setThemeProps(res.getTheme(res.getThemeResourceNames()[0]));          

UIBuilder builder = new UIBuilder();
frm = (Form)builder.createContainer(res, "MainForm");
StateMachine sm=new StateMachine("/App.res");
System.out.println("------->>>");
bname=new Vector();
this.readmenu();
b = new Button[bname.size()];
System.out.println(b.length+bname.toString());
        for (int i = 0; i<b.length; i++) {
            b[i] = new Button(bname.elementAt(i).toString());
            b[i].setAlignment(Label.CENTER);
            b[i].getStyle().setMargin(2,5,5,5);
            b[i].getStyle().setPadding(5,5,5,5);
            System.out.println(b[i].toString());
            b[i].addActionListener(this);
            sm.con1.addComponent(b[i]);
            //System.out.println("\n " + b[i]);
   }
frm.addComponent(sm.con1);
frm.show();
}
catch(IOException err) {
err.printStackTrace();
}

public void actionPerformed(ActionEvent ae) {
    throw new UnsupportedOperationException("Not supported yet.");
}

Button上記のコードを使用して、 jsonを使用して動的に作成しています。コンソールで値を取得できましたが、で値を取得できませんでしButtonForm

4

2 に答える 2

1

基本クラスは独自にフォームを作成して表示し、独自のテーマを設定する (以前に行ったことをオーバーライドする) ため、これはステート マシン (1.4 BTW の一部ではない) の使用が明らかに間違っています。

また、デバイス上で実行されないcon1呼び出しの作成/定義を含めることを怠っています。UnsupportedOperationException

すべての LWUIT コードはステート マシンにある必要があります。アニメーションを作成するためにオンザフライでタイトルを置き換える T ゾーン デモを含むデモに従ってください。そのコードはすべて、特定のフォーム初期化メソッドをオーバーライドし、そこからフォームを変更するステート マシンに完全に含まれています。

すべてを手動で記述したい場合は、ステート マシンを使用せず、UIBuilder を直接使用してください。

于 2011-07-28T04:41:38.227 に答える
0

ボタンを作成した後でも、表示後でもフォームに追加でき、フォームで revalidate() を実行する必要があると思います

frm.revalidate();
于 2011-07-30T21:49:31.280 に答える