0

我正在使用 LWUIT 制作应用程序。

  1. 有一个表格

  2. 表格中嵌入了一个列表。

  3. 该列表有 5 个元素。

  4. 最初,当我第一次加载应用程序时,如果我选择第一个元素,则选择第二个;当我选择第二个时,选择第三个等等(奇怪!)

  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 Emulator:默认触摸屏手机

4

2 回答 2

0

在动作事件上,通过调用将列表设置为在事件发生后再次处于活动状态setHandlesInput(true)

于 2012-06-14T13:14:16.157 回答
0

好的....所以这就是你解决它的方法。

显示表单后,从表单中删除列表并再次将其添加到表单中,然后重新绘制表单。

早期代码

1) form.addComponenet(BorderLayout.center,list); 2) form.show();

解决问题

1)form.addComponenet(BorderLayout.center,list); 2)form.show(); 3)form.setScrollable(false);

我知道这有点奇怪,但是这样列表索引选择对于触摸屏手机来说很流畅。

于 2012-06-16T07:41:52.333 回答