0

LWUITを使用してアプリケーションを作成しています。

  1. フォームがあります

  2. フォームに埋め込まれたリストがあります。

  3. リストには5つの要素があります。

  4. 最初に、アプリを最初にロードしたときに、最初の要素を選択すると、2番目の要素が選択されます。私が2番目を選択すると、3番目が選択され、以下同様に続きます(奇妙な!)

  5. 画面上のどのボタンもクリックできません

  6. 次に私がすることは、(キーボードの...私はシミュレーターでアプリを実行している)矢印キーを使用するのとは別のものにシフトすることです

  7. 次に、最初のフォームに戻り、すべてが期待どおりに機能します(奇妙な動作はありません)。

  8. 何が問題になる可能性がありますか?

  9. Sun Java Micro Edition SDK 3.0(テスト用のデフォルトのタッチスクリーン)を使用しています

私のコードは次のとおりです。

List dummy = new List();
        dummy.addItem("wewerwer");
        dummy.addItem("wewerdswer");
        dummy.addItem("wewqweerwer");
        dummy.addItem("dscxwewerwer");
        dummy.addItem("jhgwewerwer");
        mainListForm.setLayout(new BorderLayout());
        mainListForm.addComponent(BorderLayout.CENTER,dummy);
   mainListForm.show();

ここで何がうまくいかない可能性がありますか?

更新1

ここにバグがあると思います。スクリーンショットと一緒に以下の完全なコードを添付しました

import javax.microedition.midlet.*;

import com.sun.lwuit.*;
import com.sun.lwuit.events.*;
import com.sun.lwuit.plaf.UIManager;
import com.sun.lwuit.util.Resources;

public class Demo extends MIDlet implements ActionListener {

  private Form mForm;
List abc;
  public void startApp() {

      Display.init(this);

      try {
Resources r = Resources.open("/Test.res");
UIManager.getInstance().setThemeProps(r.getTheme(
r.getThemeResourceNames()[0])
);
} catch (Exception e){
System.out.println(e.toString());
}

    if (mForm == null) {
      Button click = new Button("Press me!");

      click.addActionListener(new ActionListener() {

                public void actionPerformed(ActionEvent ae) {
                   System.out.println("I have been pressed");
                }
            });
       abc = new List();
      abc.addItem("Str1");
      abc.addItem("Str2");
      abc.addItem("Str3");
      abc.addItem("Str4");
      abc.addItem("Str5");
      abc.addItem("Str6");



      Form f = new Form("Hello, LWUIT!");
      abc.addActionListener(this);
       f.addComponent(abc);
      Command exitCommand = new Command("Exit");
      f.addCommand(exitCommand);
      f.addCommandListener(this);
      f.addComponent(click);
      f.show();
    }
  }

  public void pauseApp() {
  }

  public void destroyApp(boolean unconditional) {
  }

  public void actionPerformed(ActionEvent ae) {
      System.out.println(abc.getSelectedIndex());

  }
}

ここに画像の説明を入力してください

したがって、リストの「Str1」をクリックすると、Str2が選択されます。

IDE:Netbeansエミュレータ:デフォルトのタッチスクリーン電話

4

2 に答える 2

0

アクションイベントで、を呼び出して、イベント後にリストを再びアクティブに設定しますsetHandlesInput(true)

于 2012-06-14T13:14:16.157 に答える
0

わかりました....これがあなたがそれを解決する方法です。

フォームが表示されたら、リストをフォームから削除し、再度フォームに追加してから、フォームを再描画します。

以前のコード

1) form.addComponenet(BorderLayout.center,list); 2) フォーム.ショー();

問題の周りの言葉

1)form.addComponenet(BorderLayout.center,list); 2)フォーム.ショー(); 3)form.setScrollable(false);

奇妙なことだとは思いますが、この方法では、リスト インデックスの選択がタッチ スクリーンの電話でスムーズに機能します。

于 2012-06-16T07:41:52.333 に答える