J2ME赞扬订单

时间:2011-01-11 07:22:45

标签: java java-me

我在我的应用程序中混合了一些不同类型的命令,如OK,CANCEL,BACK,EXIT,SCREEN。

例如,

exit = new Command("Exit", Command.EXIT, 5);
_123=new Command("123",Command.BACK,4);
ABC=new Command("ABC",Command.CANCEL,3);
sample1=new Command("Sample1",Command.SCREEN,1);
sample2=new Command("Sample2",Command.OK,2);

我需要的订单是:Sample1,Sample2,ABC,退出。但它显示如Sample1,Sample2,Exit,ABC是右侧,123是放在左侧按钮。

这里,我在使用下面的代码添加一个命令(Edit_Cell)时也有一个问题....而且我需要在Sample1之前的第一个地方显示它。但是它显示在右边所有命令的结尾侧。

我在另一个src文件构造函数中添加了这个新命令(Edit_Cell),并在上面代码的下面调用该构造函数(添加命令)。

Edit_Cell是SCREEN的类型,而另一个源文件中的PRIORITIES是1。

我需要的最终订单是:Edit_Cell,Sample1,Sample2,ABC,Exit, on right hand side and _123在左侧。

2 个答案:

答案 0 :(得分:5)

首先,如果没有冒犯,我认为你应该详细说明你的书面作文,我花了一些时间来理解这个问题。

然而,根据这个(诺基亚的维基论坛),你声称命令的方式是有道理的:

  

软键的命令映射遵循以下规则:

     

右软键:只能有一个   “否定”命令(STOP,CANCEL,   按此优先顺序退出,退出)   映射到右软键,和   直接映射的命令   由软键按下。

     

左软键:可以使用多个命令   在左软键下映射   左边有“选项”标签   软键和选择将打开   一个命令菜单。如果有的话   只有一个“积极的”命令(好的,   左下方的项目,屏幕或帮助   软键将直接呈现   在左软键上。 (注意:有些LCDUI   组件有自己的操作   这也将在左下方可见   软键因此强制选项菜单。)如果   有多个负面命令   这将强制左侧的选项菜单   软键和命令将是   在下面定义的顺序中提供。

     

中软键:在40系列中只有一个   单个上下文敏感命令(好的,   ITEM)映射到Middle软键。在   S60多重上下文敏感   命令(OK,ITEM)可以映射到   中软键。如果只有单身   命令将直接显示在   软键,否则命令是   在上下文相关菜单中可见   从中间的软键打开。一般   相同的命令映射到Middle   左侧也有软键   软键(直接或通过选项   菜单)。注意:一些UI组件   覆盖此规则并放置组件   具体操作直接到中间   软键。例如,POPUP   ChoiceGroup有“开放”操作   中软键。

显然这在很大程度上取决于平台,但似乎你的midlet假定_123为负命令,而其他所有其他都放在另一个软键上。

我会尝试更改类型并根据您的意愿设置优先级......类似这样的

exit = new Command("Exit", Command.EXIT, 5);
_123=new Command("123",Command.BACK,0);
ABC=new Command("ABC",Command.SCREEN,3);
sample1=new Command("Sample1",Command.SCREEN,1);
sample2=new Command("Sample2",Command.OK,2);

您可以将Edit_Cell的优先级设置为0,将其类型设置为SCREEN。只需添加:ITEM命令通常放在之前。

我希望这会有所帮助。 问候。

答案 1 :(得分:0)

我在这里回复你的评论,它不那么凌乱...... 也许它按照添加的顺序显示命令(不使用优先级)。添加Edit_Cell后,我会删除所有命令,并在添加Edit_Cell后再次添加所有命令。 如果您只能修改表单的代码,那么您可以覆盖addCommand方法以确保在添加Edit_Cell时删除所有先前的命令并在以后再次添加。

这样的事情:

@Override
    public void addCommand(Command cmd) {
        if (cmd.getLabel().equals("Edit_Cell")){
           removeCommand(sample1); // with all the previously added commands
        }
        super.addCommand(cmd);
        if (cmd.getLabel().equals("Edit_Cell")){
          addCommand(sample1); // again with all your previously added commands
        }
    }

它不是很优雅,但是,只要它有效,你总能让它变得更优雅....