服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

使用netbeans开发基于cdc的java me程序入门

2006年3月份,netbeans.org发布了mobility pack 5.0 for cdc,这样使用netbeans的开发者可以很容易地开发基于cdc的java me应用程序了,唯一要做的就是安装mobility pack 5.0 for cdc插件。本文介绍如何搭建cdc的开发环境,编写一个简单的入门程序。相比基于cldc的java me开发,cdc的相关技术方兴未艾,还有待我们去挖掘和探索。

目前只有sonyericsson和nokia提供了对cdc开发的支持,sonyericsson推出的sonyericsson cdc扩展平台可以很好地与netbeans集成到一起,并且sonyericsson的m600和p990都支持cdc。本文以sonyericsson cdc扩展平台为例搭建开发环境,另外nokia 的s80同样提供了对cdc的支持。

首先我们需要安装以下软件:

1)j2sdk 1.4.2 or jdk 5.0

2)netbeans ide 5.0

3)mobility pack 5.0 for cdc

4)uiq sdk 3.0 beta

5)sonyericsson cdc扩展平台1.0 beta

6)sonyericsson m600 cdc 扩展包

7)sonyericsson p990 cdc 扩展包

这些软件在j2me开发网的下载中心都能找到,请登录http://www.j2medev.com/soft/index.asp下载。

首先安装jdk,其次是netbeans ide 5.0,然后是mobility pack 5.0 for cdc和相关的扩展软件。然后我们需要把cdc平台集成到netbeans之中,从菜单选择工具――java 平台管理器,然后选择java me平台cdc模拟器,如下图所示:使用netbeans开发基于cdc的java me程序入门(图一)

点击查看大图

然后找到uiq sdk 3的安装目录,将其添加到netbeans ide中。

使用netbeans开发基于cdc的java me程序入门(图二)

点击查看大图

mobility pack 5.0 for cdc可以很好地支持cdc开发,包括:

  1. 支持cdc开发,包括sonyericsson cdc扩展平台和nokia s80平台
  2. 项目向导,一步步地指导你编写一个cdc项目
  3. 可视化ui设计器,继承自matisse项目,允许使用拖拽的方式开发awt的界面。
  4. 创建symbian 程序安装包
  5. 提供了一个symbian mbm编辑器
  6. 支持junit单元测试框架

下面通过一个范例说明如何使用netbeans ide开发cdc相关的项目。新建一个cdc项目,命名为cdcapp如下图所示:

使用netbeans开发基于cdc的java me程序入门(图三)

点击查看大图

使用netbeans开发基于cdc的java me程序入门(图四)

点击查看大图

由于我们让netbeans自动创建main类,所以新建项目完成后,在源文件中会出现cdcapp.main。cdc的项目结构如下所示,与cldc项目不同的是,项目结构增加了junit单元测试,我们可以在cdc的项目中编写单元测试程序。

使用netbeans开发基于cdc的java me程序入门(图五)

相比midp,cdc的上层简表提供了awt图形库(不包括swing),因此我们可以开发出界面更加丰富的ui程序,mobility pack 5.0 for cdc整合了matisse,可以借助它用拖拽的方式开发ui程序,这里我们不介绍详细的细节。使用ui设计器可以很快生成一个ui程序,代码如下所示:

/*
 * main.java
 *
 * created on 2006年4月19日, 下午3:08
 */

package cdcapp;

/**
 *
 * @author  ming
 */
public class main extends java.awt.frame {
   
    /** creates new form main */
    public main() {
        initcomponents();
    }
   
    /** this method is called from within the constructor to
     * initialize the form.
     * warning: do not modify this code. the content of this method is
     * always regenerated by the form editor.
     */
    // //gen-begin:initcomponents
    private void initcomponents() {
        label1 = new java.awt.label();
        textfield1 = new java.awt.textfield();
        label2 = new java.awt.label();
        textfield2 = new java.awt.textfield();
        label3 = new java.awt.label();
        textarea1 = new java.awt.textarea();

        addwindowlistener(new java.awt.event.windowadapter() {
            public void windowclosing(java.awt.event.windowevent evt) {
                exitform(evt);
            }
        });

        label1.settext("username");

        label2.settext("password");

        label3.settext("description");

        org.jdesktop.layout.grouplayout layout = new org.jdesktop.layout.grouplayout(this);
        this.setlayout(layout);
        layout.sethorizontalgroup(
            layout.createparallelgroup(org.jdesktop.layout.grouplayout.leading)
            .add(layout.createsequentialgroup()
                .addcontainergap()
                .add(layout.createparallelgroup(org.jdesktop.layout.grouplayout.trailing)
                    .add(org.jdesktop.layout.grouplayout.leading, textarea1, org.jdesktop.layout.grouplayout.default_size, 196, short.max_value)
                    .add(org.jdesktop.layout.grouplayout.leading, layout.createsequentialgroup()
                        .add(layout.createparallelgroup(org.jdesktop.layout.grouplayout.trailing, false)
                            .add(org.jdesktop.layout.grouplayout.leading, label2, org.jdesktop.layout.grouplayout.default_size, org.jdesktop.layout.grouplayout.default_size, short.max_value)
                            .add(org.jdesktop.layout.grouplayout.leading, label1, org.jdesktop.layout.grouplayout.default_size, org.jdesktop.layout.grouplayout.default_size, short.max_value)
                            .add(org.jdesktop.layout.grouplayout.leading, label3, org.jdesktop.layout.grouplayout.default_size, org.jdesktop.layout.grouplayout.default_size, short.max_value))
                        .add(16, 16, 16)
                        .add(layout.createparallelgroup(org.jdesktop.layout.grouplayout.leading, false)
                            .add(textfield2, org.jdesktop.layout.grouplayout.default_size, org.jdesktop.layout.grouplayout.default_size, short.max_value)
                            .add(textfield1, org.jdesktop.layout.grouplayout.default_size, 115, short.max_value))))
                .addcontainergap(47, short.max_value))
        );
        layout.setverticalgroup(
            layout.createparallelgroup(org.jdesktop.layout.grouplayout.leading)
            .add(layout.createsequentialgroup()
                .addcontainergap()
                .add(layout.createparallelgroup(org.jdesktop.layout.grouplayout.leading)
                    .add(label1, org.jdesktop.layout.grouplayout.default_size, org.jdesktop.layout.grouplayout.default_size, short.max_value)
                    .add(textfield1, org.jdesktop.layout.grouplayout.preferred_size, org.jdesktop.layout.grouplayout.default_size, org.jdesktop.layout.grouplayout.preferred_size))
                .addpreferredgap(org.jdesktop.layout.layoutstyle.related)
                .add(layout.createparallelgroup(org.jdesktop.layout.grouplayout.leading)
                    .add(label2, org.jdesktop.layout.grouplayout.preferred_size, org.jdesktop.layout.grouplayout.default_size, org.jdesktop.layout.grouplayout.preferred_size)
                    .add(textfield2, org.jdesktop.layout.grouplayout.preferred_size, org.jdesktop.layout.grouplayout.default_size, org.jdesktop.layout.grouplayout.preferred_size))
                .addpreferredgap(org.jdesktop.layout.layoutstyle.related)
                .add(label3, org.jdesktop.layout.grouplayout.preferred_size, org.jdesktop.layout.grouplayout.default_size, org.jdesktop.layout.grouplayout.preferred_size)
                .addpreferredgap(org.jdesktop.layout.layoutstyle.related)
                .add(textarea1, org.jdesktop.layout.grouplayout.preferred_size, 141, org.jdesktop.layout.grouplayout.preferred_size)
                .add(53, 53, 53))
        );
        pack();
    }// //gen-end:initcomponents
   
    /** exit the application */
    private void exitform(java.awt.event.windowevent evt) {//gen-first:event_exitform
        system.exit(0);
    }//gen-last:event_exitform
   
    /**
     * @param args the command line arguments
     */
    public static void main(string args[]) {
        java.awt.eventqueue.invokelater(new runnable() {
            public void run() {
                new main().setvisible(true);
            }
        });
    }
   
   
    // variables declaration - do not modify//gen-begin:variables
    private java.awt.label label1;
    private java.awt.label label2;
    private java.awt.label label3;
    private java.awt.textarea textarea1;
    private java.awt.textfield textfield1;
    private java.awt.textfield textfield2;
    // end of variables declaration//gen-end:variables
   
}

以上代码均由netbeans ide自动生成。运行项目,可以看到如下的界面:

使用netbeans开发基于cdc的java me程序入门(图六)

这样我们的第一个cdc程序已经成功了,mobility pack 5.0 for cdc还提供了很多功能,这里不一一介绍了。有兴趣可以登录netbeans.org了解更多内容。

扫描关注微信公众号