Lwuit触摸屏奇怪的行为

时间:2012-06-13 17:53:41

标签: java-me lwuit lwuit-form

我正在使用LWUIT进行申请。

  1. 有一个表格

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

  3. 该列表包含5个元素。

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

  5. 我无法点击屏幕上的任何按钮

  6. 接下来我做的是,转换到与使用箭头键(键盘的......我正在模拟器上运行应用程序顺便说一下)

  7. 然后我回到第一个表单,现在一切都按预期工作(没有奇怪的行为)。

  8. 可能是什么问题?

  9. 我正在使用Sun Java Micro Edition SDK 3.0(默认触摸屏进行测试)

  10. 我的代码是:

    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());
    
      }
    }
    

    enter image description here

    所以现在当我点击列表中的'Str1'时,Str2会被选中,等等。

    IDE:Netbeans 模拟器:默认触摸屏手机

2 个答案:

答案 0 :(得分:0)

在操作事件上,通过调用setHandlesInput(true)

将列表设置为在事件后再次激活

答案 1 :(得分:0)

好的....所以这就是你如何解决它。

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

早期代码

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

Word for around

1)form.addComponenet(BorderLayout.center,列表); 2)form.show(); 3)form.setScrollable(假);

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