在j2me中遍历自定义GUI

时间:2011-12-03 04:52:10

标签: java-me custom-controls midp lcdui

这是我的Traverse方法代码

protected boolean traverse(int dir, int viewportWidth, int viewportHeight,
        int[] visRect_inout) {
    try {
        if (hori && vert) {
            // CustomItems items=new CustomItems("Hi");
            switch (dir) {
                case Canvas.DOWN:
                    this.a=dir;                  //Canvas.DOWN
                    this.b=viewportWidth;        //b=2
                    this.c=viewportHeight;       //c=3 
                    this.d=visRect_inout;        //d={2,2,250,250}
                    this.traverse(Canvas.UP, b, c, d);

                    break;
                case Canvas.UP:
                    this.a=dir;
                    this.j=viewportWidth;
                    this.k=viewportHeight;
                    this.d=visRect_inout;  
                    this.traverse(Canvas.UP, j, k, d);
                    break;
                case Canvas.LEFT:
                    this.a=dir;
                    this.j=viewportWidth;
                    this.k=viewportHeight;
                    this.d=visRect_inout;
                    this.traverse(Canvas.LEFT, j, k, d);
                    break;
                case Canvas.RIGHT:

                    break;
            }
        }

    } catch (Exception e) {
        System.out.println("Exception " + e);
    }
    return false;
}

我对自定义项目很新 如果我做错了,请告诉我。

1 个答案:

答案 0 :(得分:0)

从switch语句中调用traverse的方式对我来说很滑:

                    this.traverse(Canvas.UP, b, c, d); // ...
                    // ...and similar in cases Canvas.UP, LEFT

到目前为止您发布的代码非常零碎,但据我所知,上面将导致traverse的无限递归调用,最终以堆栈溢出错误结束。

在您的特定情况下,这可能是无害的,因为您无条件地从您的方法返回false。根据我的理解,这意味着设备永远不会尝试使用Canvas UP和其他潜在危险值来调用遍历。如果您有兴趣,请随时查看lcdui CustomItem#traverse API documentation以获取更多详细信息。

  • 鉴于您的代码,我认为您在教程中学习入门代码示例是很有意义的。网上有很多可用的东西 - 在网上搜索“MIDP tutorial CustomItem”之类的东西。以下是一个链接:Adding Custom Items to MIDP 2.0 Forms

    此外,如果您使用的是Wireless Toolkit / Java ME SDK,则可以查看其代码示例。根据我的回忆,那里有很好的CustomItem代码工作示例。