使用Netbeans开发基于CDC的Java ME程序入门

转载 2007年09月24日 14:56:00

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模拟器,如下图所示:

然后找到UIQ SDK 3的安装目录,将其添加到Netbeans IDE中。

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自动创建Main类,所以新建项目完成后,在源文件中会出现cdcapp.Main。CDC的项目结构如下所示,与CLDC项目不同的是,项目结构增加了JUnit单元测试,我们可以在CDC的项目中编写单元测试程序。

相比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自动生成。运行项目,可以看到如下的界面:

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

 

相关文章推荐

Java ME引路蜂地图开发示例:设置地图类型

创建RasterMap实例之后,可以对其进行放大,缩小,平移,设置地图类型等操作。 在第一个地图应用中,在调用RasterMap.setCenter 时可以指定地图类型,另外也可以使用RasterM...

Eclipse Eclipseme wtk配置JAVA ME开发环境

  一、软件下载Eclipse3.4+Eclipseme1.7.9+wtk3.0 配置JAVA ME开发环境下载最新版的必备软件,1 eclipse 3.4 到下面这个地址去找找    http://...

Java ME引路蜂地图开发示例:地址查询

引路蜂地图API中同样提供了地址查询,路径查询,本地搜索,IP地址查询,地址反编码(通过经纬度查地名)等。 地址查询(或称为地址编码)是将输入的地名(如南京林业大学)转换成对应的经纬度坐标然后将其...

Java ME引路蜂地图开发示例:第一个地图应用

下面的代码显示中国南京地图 //------------------------------------------------------------------------------ // ...

Java ME引路蜂地图开发示例:路径查询

可以通过RasterMap的getDirection()方法来查询路径,和查询地址类似,路径查询的结果也是通过回调函数的方式来通知应用程序的,下面的例子返回南京到北京的路径。返回结果存放在MapDir...

Java手机开发平台 Java ME

J2ME,现称为Java ME(Java Platform, Micro Edition )是为机顶盒、移动电话和PDA之类嵌入式消费电子设备提供的Java语言平台,包括虚拟机和一系列标准化的Java...

Java ME引路蜂地图开发示例:叠加自定义图层

在开发应用的过程中,常常需要在地图上需绘制一点自定义的兴趣点或是自定义的几何图形。引路蜂地图包中RasterMap最终提供的基实就是一张图片。 protected void paint(Graphi...

Java ME引路蜂地图开发示例:选择地图服务

引路蜂地图服务缺省使用Google地图服务,但你也可以选择其它地图服务,比方说当Google服务离线时,您可以选择MapAbc的地图服务,另外要注意的是中国地图是有偏移的。如果想使用无偏移的中国地图,...

Java ME引路蜂地图开发示例:离线地图示例

在手机上,离线地图包一般放在SD卡上,然后通过文件读取。这里为简单起见,将离线放在例子的资源目录中和应用编译在一起。实际应用中请单独存放这些地图包。引路蜂地图开发包支持同时读取多个地图包,这是通过Ma...

JAVA ME 开发包含几个类的调用

  • 2011年12月05日 14:24
  • 3KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Netbeans开发基于CDC的Java ME程序入门
举报原因:
原因补充:

(最多只允许输入30个字)