在 LWUIT 表单和 LCDUI 表单之间切换

Posted

技术标签:

【中文标题】在 LWUIT 表单和 LCDUI 表单之间切换【英文标题】:Switching between LWUIT Form and LCDUI Form 【发布时间】:2011-07-10 06:50:46 【问题描述】:

我已经构建了一个包含 Midlet 的 LWUIT UI 类。我基本上使用的是这个 midlet 的主题。但我需要跳转到另一个包含一些 LCDUI 控件的 LCDUI 表单,并且我需要设置显示该 LCDUI 表单。那么是否可以从 LWUIT 表单跳转到 LCDUI 表单并设置显示 LCDUI 表单?如果可能怎么做?

【问题讨论】:

【参考方案1】:

我使用以下代码来显示 LWUIT 表单和 LCDUI 表单。请参阅示例代码。

com.sun.lwuit.Form lwuitForm;
protected void startApp() throws MIDletStateChangeException 
    Display.init(this);
    lwuitForm = new com.sun.lwuit.Form("LWUIT Form");
    lwuitForm.addComponent(new TextField(""));

    final MIDlet midlet = this;
    final Command abtUsCmd = new Command("Next") 
        public void actionPerformed(ActionEvent evt) 
            javax.microedition.lcdui.Form  frm = new javax.microedition.lcdui.Form("LCDUI Form");
            StringItem item = new StringItem("Text", "Sample text");
            frm.append(item);

            final javax.microedition.lcdui.Command cmd = new javax.microedition.lcdui.Command("Back", javax.microedition.lcdui.Command.BACK, 0);
            CommandListener cmdLis = new CommandListener() 

                public void commandAction(javax.microedition.lcdui.Command c, Displayable d) 
                    if(c == cmd) 
                        Display.init(midlet);
                        lwuitForm.show(); // Show the LWUIT form again
                    
                
            ;

            frm.setCommandListener(cmdLis);
            frm.addCommand(cmd);

            javax.microedition.lcdui.Display.getDisplay(midlet).setCurrent(frm); // show the LCDUI Form
        
    ;
    lwuitForm.addCommand(abtUsCmd);
    lwuitForm.show(); // Show the LWUIT Form

【讨论】:

是否可以设置背景LWUIT主题并在其顶部设置lcdui表单.....??? AFAIK 这是不可能的。您不能同时使用两者。 我们可以在 lcdui 表单之上调用 lwiit 表单吗?这意味着我有一个 lcdui 应用程序,我只想使用 LWUIT 中的一个组件(比如htmlComponent)。所以我不能制作表单并从当前的 LCDUI 表单中显示它吗?【参考方案2】:

这看起来很棘手,但是是的,我们可以在两者之间切换。 诀窍是当你显示 LWUIT 表单时,在屏幕上成功绘制后,调用

javax.microedition.lcdui.Display.getDisplay(midlet).getCurrent();

这为您提供了包含所有 LWUIT 视图的 Displayable,因此,您可以随时切换到 LCDUI,然后使用 LCDUI 切换回 LWUIT

display.setCurrent

让我知道这是否适合您。 谢谢

【讨论】:

谢谢,这对我来说非常有用。现在我可以用原生平台实现做所有类型的事情了。

以上是关于在 LWUIT 表单和 LCDUI 表单之间切换的主要内容,如果未能解决你的问题,请参考以下文章

哪个与大多数 J2ME 设备兼容:- LWUIT 还是 LCDUI?

在 LWUIT 组件上绘制 javax.microedition.lcdui.Graphics

更改 LWUIT 中的启动表单

如何刷新 lwuit 表单?

LWUIT 滚动跳跃问题

使用代码访问通过 LWUIT 资源编辑器创建的表单