在j2me canvas表单中使用事件?

时间:2012-07-01 11:04:35

标签: java-me midp lcdui

我是网络开发者。最近被迫在j2me做点什么。

我们在j2me中有app用于处理SMS-Text-Message并根据这些短信制作不同的UI。在此应用表单中,使用Canvas手动创建。

每个画布中有几个操作(可通过用户选择不同的选项执行)。其中一些operation create new canvas(类似多表单显示)。

是否有解决方案在每个画布表单中定义事件,然后调用一些操作(如创建新画布)。

  

更多信息:

例如,我吹了代码(Canvas-Form):

public void keyPressed(int key) {
        if (key == -3) {
            // call OK-event 
        }
    }

这意味着当用户输入特定密钥时,例如事件调用回到基础 midlet 。(在这种情况下 Canvas-Form midlet 在不同的java类中。)

要在点网中执行此操作,我们会在 Canvas-Form 中定义事件,然后调用它。我们还在 midlet-class 处理该事件,并编写自己的代码int handle-method

所以我的问题是如何在J2me中做同样的事情?

  

越来越多的其他信息(更新2)

我对java和j2me的了解不及Alga对此的了解:)。所以也许我的问题似乎很荒谬。但我的 问题 包含以下部分:

1)定义事件(我不知道怎么做!)
2)调用事件(我在代码示例中写call OK-event注释)
3)处理事件方法(我不知道如何!)

我的搜索,我看到很多例子如何用命令定义事件。但是在画布形式中,我应该定义Command来执行此操作,或者不需要Command,因为我在画布中绘制按钮。我希望有人能用这种描述理解我的问题。

并希望它能阻止 Downvotes :)

1 个答案:

答案 0 :(得分:3)

这很容易做到。 Canvas可以监听按键和指针事件以及命令。您可以在API中定义的各个方法中实现所需的操作

如果您有兴趣,请在Canvas API documentation中找到有关该内容的详细信息。

创建新的画布也很容易,因为它们都是普通的旧Java对象,没有魔法。你似乎主要在C#中活动,期望它就像你创建C#对象的实例一样

唯一值得记住的细节是,要使您的画布(或任何Displayable)可见,您需要一个与您的应用程序对应的Display实例。获取该实例的唯一方法是从扩展MIDlet的类 - 从作为MIDP应用程序入口点的类开始。

您必须在那里获取Display实例,并进一步确保它可以在您需要的任何地方使用。该实例也是一个普通的Java对象,非常类似于C#对象,暴露它的方式不是特定于MIDP的。

如果您需要了解更多详细信息,请考虑在

学习对教程和API文档的参考

对于问题更新中提供的代码段,找出正在进行的操作的方法是添加适当的日志记录并在模拟器中重新测试,在按键时查看模拟器控制台。

public void keyPressed(int key) {
        // add logging here:
        System.out.println("keyPressed [" + key + "]");
        if (key == -3) {
            // add logging here:
            System.out.println("calling OK-event");
            // call OK-event 
        }
}

有关示例代码,请检查lcdui标记wiki,EventEx3.java中有对“MIDP事件处理”教程的引用。 lcdui标签wiki中列出的另一个值得关注的教程是“J2ME教程:MIDP 2.0的用户界面”,使用低级API 部分 - 还有示例代码。