Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java me 检查j2me中的CustomItem是否支持遍历_Java Me_Midp_Lcdui - Fatal编程技术网

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

Java me 检查j2me中的CustomItem是否支持遍历,java-me,midp,lcdui,Java Me,Midp,Lcdui,检查j2me中的CustomItem是否支持遍历 boolean isCustomItemSupported; try { Class.forName("javax.microedition.lcdui.CustomItem"); isCustomItemSupported = true; } catch (Exception e) { isCustomItemSupported = false; } 我应该如何检查j2me中的CustomItem是否支持遍历?Shi

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

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

我应该如何检查j2me中的CustomItem是否支持遍历?

Shiva,我认为您对遍历的理解存在一些差距。让我解释一下

boolean isCustomItemSupported;
try {
    Class.forName("javax.microedition.lcdui.CustomItem");
    isCustomItemSupported = true;
} catch (Exception e) {
     isCustomItemSupported = false;
}
您可以向表单中添加任意数量的项。该框架为MIDP中内置的所有项管理以下内容

  • 所有项目的定位和呈现
  • 滚动,当屏幕上可以容纳更多的项目时
  • 处理屏幕命令和项目命令
  • 但是,当您扩展CustomItem并实现自己的项时,完全的控制权就在实现中。考虑一个窗体包含TeXFieldand CustomItemImpl的情况,您希望在TeXFieldand CuutuTimeMIL之间切换。由于键处理、命令处理和呈现都在CustomItemImpl的控制下,因此必须有一种方式,让framework知道何时希望TextField具有控制权,以及何时需要将控制权传递给CustomItemImpl

    下面是CustomItem中的traverse()方法的步骤。在CustomItemImpl中渲染和捕获数据时返回false,在CustomItemImpl中保留控件时返回true

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

  • 选择一个节点
  • 展开或折叠节点
  • 导航节点
  • 以上所有功能都是TreeItem实现的一部分。但是,当您向上移动KEY_超过树的第一个节点或向下移动KEY_超过树的最后一个节点时,您希望移动到TextField/与此树项相邻的任何其他项。您让框架知道您的意图的方式是

  • 当焦点位于树的第一个节点上时,如果选择了向上键,则在traverse()方法中返回false
  • 当焦点位于树的最后一个节点上时,如果选择了向下键,则在traverse()方法中返回false

  • 希望这能澄清你的疑问。我强烈建议您看看这个特别的例子,以获得更具体的说明。

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

    调用类“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”派生的类的对象。

    Hi oxigen,感谢您的回复。我还想检查CustomItem中的树版本是否允许。如何做?这不是问题的答案。这只是检查电话上是否有CustomItem。这最多只能告诉应用程序平台是否为MIDP2.0!谢谢你提供的信息。但是你的回答不清楚,不简单。我不明白,这让我很困惑。请尽可能简单,尽可能清楚,尽可能理解格式。让我尽量简单。CustomItem将嵌入表单中。但绘制和事件处理不是通过表单完成的,而是CustomItem。请考虑该窗体包含TeXFieldand Cu饰项目。用户将使用向上键和向下键选择文本字段或表单。除非CustomItem告诉表单它已经完成了它的工作,否则表单将不知道将关键事件移动到TextField。所以,当您在traverse方法中返回false时,表单将知道CustomItem已经完成了它的工作,并将焦点移到TextField。