检查j2me中的CustomItem是否支持遍历

时间:2010-12-03 07:01:36

标签: java-me midp lcdui

检查j2me中的CustomItem是否支持遍历?

我应该如何在j2me支持遍历中检查CustomItem?

3 个答案:

答案 0 :(得分:1)

湿婆,我认为你对穿越的理解存在一些差距。让我解释一下。

您可以向表单添加任意数量的项目。该框架管理MIDP内置的所有项目的以下内容

  1. 定位和呈现所有项目
  2. 滚动,当有更多项目可以放入屏幕时。
  3. 处理屏幕命令和项目命令。
  4. 但是当您扩展CustomItem并实现自己的项目时,完全控制就在实现中。考虑一个Form包含TextField和CustomItemImpl并且您希望在TextField和CustomItemImpl之间切换的情况。由于密钥处理,命令处理和呈现都在CustomItemImpl的控制之下,因此必须有一种框架必须知道何时希望TextField具有控制权以及何时需要将控件传递给CustomItemImpl。

    这里是CustomItem中的traverse()方法的步骤。当你完成在CustomItemImpl中渲染和捕获数据时返回false,当你想在CustomItemImpl中保留控件时返回true。

    让我进一步阐述。假设您正在实现TreeItem。当焦点在TreeItem上时,您希望执行以下操作:

    1. 选择一个节点
    2. 展开或折叠节点
    3. 导航节点
    4. 以上所有功能都构成了TreeItem实现的一部分。但是,当您将KEY_UP移动到树的第一个节点或KEY_DOWN超过树的最后一个节点时,您希望移动到TextField /与此TreeItem相邻的任何其他项。您让框架了解您的意图的方式是

      1. 当焦点位于树的第一个节点时选择KEY_UP时,在traverse()方法中返回false
      2. 当焦点位于树的最后一个节点上时,如果选择了KEY_DOWN,则在traverse()方法中返回false。
      3. 希望这能澄清您的疑问。我强烈建议您查看这个特定的example以获得更具体的说明。

答案 1 :(得分:0)

我找到了解决方案。它对我有用。

正确的解决方案调用类“javax.microedition.lcdui.CustomItem”的方法“getInteractionModes()”的设备支持查找CustomItem遍历。

下面给出了代码段

int supported_interaction_modes=this.getInteractionModes();
boolean horizontal__interaction,vertical_interaction;
if((supported_interaction_modes&CustomItem.TRAVERSE_HORIZONTAL)!=0)        //Horizontal traverse support
  horizontal_interaction=true;
else
  horizontal_interaction=false;
if((supported_interaction_modes&CustomItem.TRAVERSE_VERTICAL)!=0)
  vertical_interaction=true;        
else
  vertical_interaction=false;

在上面的代码片段中,“this”指的是派生自“javax.microedition.lcdui.CustomItem”的类的对象

答案 2 :(得分:-1)

boolean isCustomItemSupported;
try {
    Class.forName("javax.microedition.lcdui.CustomItem");
    isCustomItemSupported = true;
} catch (Exception e) {
     isCustomItemSupported = false;
}