【问题标题】:Lwuit touch screen strange behaviourLwuit触摸屏异常行为
【发布时间】:2012-06-13 17:53:41
【问题描述】:

我正在使用 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 模拟器:默认触屏手机

【问题讨论】:

    标签: java-me lwuit lwuit-form


    【解决方案1】:

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

    【讨论】:

    • 你好。我认为这里有一个错误(如果我错了,请纠正我)。当我选择索引 1 时,索引 2 被选中。我在 UPDATE 1 中添加了上面的代码。我尝试设置 list.setHandlesInput(true) 但它没有按预期工作。请让我知道我还应该尝试什么......谢谢!
    • 最奇怪的是...如果我选择最后一个索引,则列表顶部的某个索引会被选中。这很烦人。我该如何解决?
    【解决方案2】:

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

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

    早期代码

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

    解决问题

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-12
      相关资源
      最近更新 更多