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

然后找到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了解更多内容。

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值