博文

J2ME Polish学习心得(2009-11-04 00:58:00)

摘要:  最近在学习j2me,但没多久就发现很多头痛的问题,比如不同设备的不同硬件特性,jar和jad的自动打包,debug的困难等等。但后来我发现这个明为j2me plish的项目,发现他简直就是所有j2me编程折梦寐以求的东西,所以介绍给大家。        j2me polish是德国人的一个开源项目,主页是:http://www.j2mepolish.org/,类似于一个java开发环境的插件。第一篇先介绍一下它的设备优化功能(device optimization)。 比如这种经常遇到的情况,你的midlet需要发出些声音,你知道支持mmapi或midp2.0设备可以用如下方法: inputstream is = getclass().getresourceasstream("/mymid.mid"); player player = manager.createplayer(is, "audio/midi"); player.realize(); player.start();      但目前mdip1.0的手机还很多,很多手机有自己的api,比如在nokia ui中,可以这样: sound a=new sound(400,1000); a.setgain(100); a.play(1);       如果你要是你的程序在这两种手机上都能用,怎么办呢,难道维护两套源代码?这会非常麻烦的。所以,我就想如果java里有类似c++的编译预处理就好了,可以这样来: #if 设备支持mmapi 或 midp2.0 //do something here #elif 设备支持nokia ui       //do something diference here            #endif 然后编译器能自动产生针对不同设备的class文件就好了。这样解决方案可为完美,而j2me polish就可以帮你做到这一......

阅读全文(2120) | 评论:0

J2ME中使用TextField实现表单界面代码实战(2009-11-03 12:12:00)

摘要:  J2ME中使用TextField实现表单界面代码实战 收藏 本例主要借助Form和TextBox显示。 代码如下: /** * @作者 Jcuckoo * @创建日期 2008-11-18 * @版本 V 1.0 */public class TextFieldMIDlet extends MIDlet implements CommandListener{ //声名 private Display display;  private Form myform; private TextField userName; private TextField userPwd; private TextField email; private TextField number; private TextField value; private TextField telnum;  private TextBox showMessage; private Command saveCommand; private Command backCommand; private Command exitCommand;  public TextFieldMIDlet() {  display=Display.getDisplay(this);  myform=new Form("TextField实例测试");    userName=new TextField("姓名:","",20,TextField.ANY);  userPwd=new TextField("密码:","",20,TextField.PASSWORD);  email=new TextField("Email:","",20,TextField.EMAILADDR);  number=new TextField("数字字符串:","",20,TextField.NUMERIC);  value=new Tex......

阅读全文(3122) | 评论:0

[转] J2ME polish使用心得  2(2009-11-03 00:04:00)

摘要:J2ME polish使用心得一(介绍j2mepolish) 收藏 1.简介2.特色2.1 预处理(Preprocessing)2.2 手机数据库2.3 高级UI2.4 资源文件2.5 其它 3.安装j2mepolish3.1 下载3.2 安装3.3 运行例子 4.新建第一个工程5.小结 1.简介近来在公司用j2mepolish开发了一个j2me的application,对j2mepolish的使用有所得,在此用这一系列文章记下对j2mepolish的心得,希望与大家共同交流进步。j2mepolish是德国的一个open source,致力于使j2me的开发得更快捷和方便,它的强大之处体现在只需要一套代码就可以兼容尽可能多的手机platform。 2.特色经过使用及介绍,j2mepolish具有以下特色2.1 . 预处理(Preprocessing)j2mepolish使用了一系列预处理指令(Preprocessing Directives),例如在代码中 //#if {test}   System.out.println("is test mode");//#else    System.out.println("is not test mode");//#endif当在build.xml中执行"ant emulator”时,运行到这段代码的时候就会输出"is test mode",因为这里{test}的值为true; 直接执行"ant",{test}值为false,则会输出"is not test mode"(这是因为在build.xml中,target为"emulator"时,把test设为了true,后面有详细解释)在使用这种预处理的方式下,j2mepolish提供了可以兼容各个手机platform的方法,例如如果手机支持MMAPI,我们则播放一段music(不管从网络还是手机本地) //#if polish.api.mmapiPlayer player = Manager.createPlayer(url);player.realize();player.start();//#endif如果手机不支持MMAPI,则这段不会被包含到jar中,至于j2mepolish如何知道你的手机是否支持MMAPI,取决于:a......

阅读全文(2827) | 评论:0

J2ME polish使用心得(2009-11-02 23:56:00)

摘要:    1.简介2.特色  2.1 预处理(Preprocessing)  2.2 手机数据库  2.3 高级UI  2.4 资源文件  2.5 其它 3.安装j2mepolish  3.1 下载  3.2 安装  3.3 运行例子  4.新建第一个工程5.小结 1.简介  近来在公司用j2mepolish开发了一个j2me的application,对j2mepolish的使用有所得,在此用这一系列文章记下对j2mepolish的心得,希望与大家共同交流进步。  j2mepolish是德国的一个open source,致力于使j2me的开发得更快捷和方便,它的强大之处体现在只需要一套代码就可以兼容尽可能多的手机platform。 2.特色  经过使用及介绍,j2mepolish具有以下特色  2.1 .  预处理(Preprocessing)  j2mepolish使用了一系列预处理指令(Preprocessing Directives),例如在代码中 //#if {test}   System.out.println("is test mode");//#else    System.out.println("is not test mode");//#endif 当在build.xml中执行"ant emulator”时,运行到这段代码的时候就会输出"is test mode",因为这里{test}的值为true; 直接执行"ant",{test}值为false,则会输出"is not test mode"(这是因为在build.xml中,target为"emulator"时,把test设为了true,后面有详细解释)  在使用这种预处理的方式下,j2mepolish提供了可以兼容各个手机platform的方法,例如如果手机支持MMAPI,我们则播放一段music(不管从网络还是手机本地) //#if polish.api.mmapiPlayer player = Manager.createPlayer(url);play......

阅读全文(2662) | 评论:0

J2ME -- 实现短信发送界面(2009-10-30 00:44:00)

摘要:  package Prj7_1; import java.io.IOException; import javax.microedition.lcdui.Command;import javax.microedition.lcdui.CommandListener;import javax.microedition.lcdui.Display;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.Form;import javax.microedition.lcdui.Image;import javax.microedition.lcdui.ImageItem;import javax.microedition.lcdui.Item;import javax.microedition.lcdui.ItemStateListener;import javax.microedition.lcdui.TextBox;import javax.microedition.lcdui.TextField;import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException; public class MessageMIDlet extends MIDlet implements CommandListener, ItemStateListener{  private Form welcomeForm = new Form("欢迎使用..."); private Display dis; /**************** 欢迎界面  ********************/ private Command cmdExit = new Command("退出程序",Command.BACK,1); private Command cmdWriteMsg = new Command("写短信",Command.SCREEN,1); ImageItem we......

阅读全文(2823) | 评论:1

推荐几本学习java的书(2009-10-26 00:28:00)

摘要:  推荐几本学习java的书 作者:子晨 发布于:2008年09月28日 12:35 Thanking in Java(Java 编程思想)Sun JDK 上下 《精通JSP-Web开发技术与典型应用》Eclipse3.2+JDK1.5+Tomcat5.5 一、入门《Java 2从入门到精通》- 推荐《Thinking in Java》- 强烈推荐*O’reilly的Java编程基础系列 - 参考*二、进阶《Java Cook Book》- 非常推荐* (包含了Java编程的Tips,适合当做手册来查阅)《O’reilly-Java IO》- 推荐* (包含Java IO编程的各个方面)《O’reilly-Database Programming with JDBC》- 推荐* (JDBC编程)《O’reilly-Java Programming with Oracle JDBC》- 参考* 三、Java Web编程《O’reilly-Java Server Pages》- 强烈推荐*《O’reilly-Java Servlet Programming》- 非常推荐*《O’reilly-Jakarta Struts》- 推荐* (Java Web编程的一个MVC实现框架Struts的书) 四、EJB编程《J2EE应用与BEA Weblogic Server》- 强烈推荐《Mastering EJB 2.0》- 非常推荐*《Enterprise Java Bean》- 推荐* 五、Java XML编程《O’reilly-Java and XML》- 推荐*《O’reilly-Java and SOAP》- 参考* (Java的SOAP编程) 六、设计模式《Core J2EE Patterns》- 强烈推荐* (J2EE设计模式,设计企业应用软件必备参考书)《EJB Design Patterns》- 推荐* 七、其它《O’reilly Ant - The Definitive Guide》- 推荐* (Ant是一种功能非常强大的Java工具) Note:强烈推荐书籍:建议购买,重点学习非常推荐书籍:建议花时间学习推荐书籍:在学有余力的情况下,建议学习 参考书籍:有兴趣的情况下学习 首先学好j2se,然后学习j2ee或j2......

阅读全文(4520) | 评论:0

深入理解abstract class和interface(2009-10-20 11:10:00)

摘要:  abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解、对于设计意图的理解是否正确、合理。本文将对它们之间的区别进行一番剖析,试图给开发者提供一个在二者之间进行选择的依据。  理解抽象类  abstract class和interface在Java语言中都是用来进行抽象类(本文中的抽象类并非从abstract class翻译而来,它表示的是一个抽象体,而abstract class为Java语言中用于定义抽象类的一种方法,请读者注意区分)定义的,那么什么是抽象类,使用抽象类能为我们带来什么好处呢?  在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样。并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。抽象类往往用来表征我们在对问题领域进行分析、设计中得出的抽象概念,是对一系列看上去不同,但是本质上相同的具体概念的抽象。比如:如果我们进行一个图形编辑软件的开发,就会发现问题领域存在着圆、三角形这样一些具体概念,它们是不同的,但是它们又都属于形状这样一个概念,形状这个概念在问题领域是不存在的,它就是一个抽象概念。正是因为抽象的概念在问题领域没有对应的具体概念,所以用以表征抽象概念的抽象类是不能够实例化的。  在面向对象领域,抽象类主要用来进行类型隐藏。我们可以构造出一个固定的一组行为的抽象描述,但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类,而这一组任意个可能的具体实现则表现为所有可能的派生类。模块可以操作一个抽象体。由于模块依赖于一个固定的抽象体,因此它可以是不允许修改的;同时,通过从这个抽象体派生,也可扩展此模块的行为功能。熟悉OCP的读者一定知道,为......

阅读全文(1343) | 评论:1

Java中的String数据类型(2009-10-11 21:27:00)

摘要:      Java中的String数据类型    1. 首先String不属于8种基本数据类型,String是一个对象。   因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。   2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null;   3. String str=”kvill”; String str=new String (“kvill”);的区别:   在这里,我们不谈堆,也不谈栈,只先简单引入常量池这个简单的概念。   常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。   看例1: String s0=”kvill”; String s1=”kvill”; String s2=”kv” + “ill”; System.out.println( s0==s1 ); System.out.println( s0==s2 );    结果为: true true    首先,我们要知道Java会确保一个字符串常量只有一个拷贝。   因为例子中的s0和s1中的”kvill”都是字符串常量,它们在编译期就被确定了,所以s0==s1为true;而”kv”和”ill”也都是字符串常量,当一个字符串由多个字符串常量连接而成时,它自己肯定也是字符串常量,所以s2也同样在编译期就被解析为一个字符串常量,所以s2也是常量池中”kvill”的一个引用。   所以我们得出s0==s1==s2;   用new String() 创建的字符串不是常量,不能在编译期就确定,所以new String() 创建的字符串不放入常量池中,它们有自己的地址空间。   看例2: String s0=”kvill”; String s1=new String(”kvill”); String s2=”kv” + new String(“ill”); System.out.println( s0==s1 ); System.out.printl......

阅读全文(1256) | 评论:0

显示日历(2009-09-24 19:04:00)

摘要:      import javax.swing.JOptionPane;public class PrintCalendar { public static void main(String[] args) {  String stringYear = JOptionPane.showInputDialog("Input the year(e.g. 2009):");  int year = Integer.parseInt(stringYear);  String stringMonth = JOptionPane.showInputDialog("Input the month:");  int month = Integer.parseInt(stringMonth);    printMonth(year,month); }  static void printMonth(int year,int month) {  printMonthTitle(year,month);  printMonthBody(year,month); }  static void printMonthTitle(int year,int month) {  System.out.println("       "+getMonthName(month)+" "+year);  System.out.println("------------------------------");  System.out.println(" Sun Mon Tue Wed Thu Fri Sat "); }  static String getMonthName(int month) {  String monthName ......

阅读全文(1381) | 评论:0

Eclipse入门: Eclipse的使用简介及插件开发(2009-09-06 23:08:00)

摘要:http://www.ibm.com/developerworks/cn/java/l-eclipse/index.html   Eclipse 是替代IBM Visual Age for Java(以下简称IVJ)的下一代IDE开发环境,但它未来的目标不仅仅是成为专门开发Java程序的IDE环境,根据Eclipse的体系结构,通过开发插件,它能扩展到任何语言的开发,甚至能成为图片绘制的工具。目前,Eclipse已经开始提供C语言开发的功能插件。更难能可贵的是,Eclipse是一个开放源代码的项目,任何人都可以下载Eclipse的源代码,并且在此基础上开发自己的功能插件。也就是说未来只要有人需要,就会有建立在Eclipse之上的COBOL,Perl,Python等语言的开发插件出现。同时可以通过开发新的插件扩展现有插件的功能,比如在现有的Java开发环境中加入Tomcat服务器插件。可以无限扩展,而且有着统一的外观,操作和系统资源管理,这也正是Eclipse的潜力所在。 虽然目前Eclipse项目还没有最后完成,但从已有的版本中已经能领略到Eclipse设计主导思想和主要功能特点。现在就了解Eclipse不但能使广大程序员对这款业界期望很高的IDE能一睹为快,更为重要的是如果能参加到Eclipse项目的开发中或是阅读它的开放源代码,这对广大程序员来说无疑是一个千载难逢的提高编程水平的好机会。Eclipse计划提供多个平台的版本,象Windows,Linux,Solaris,HP-UX和AIX,以下只介绍Windows版本。本文第一部分先介绍Eclipse的基本使用方法。第二部分介绍如何进行Eclipse的插件开发。 一.Eclipse简介 Eclipse是开放源代码的项目,你可以到 www.eclipse.org去免费下载Eclipse的最新版本,一般Eclipse提供几个下载版本:Release,Stable Build,Integration Build和Nightly Build,建议下载Release或Stable版本,笔者用的是Build20020125(Stable版本)。Eclipse本身是用Java语言编写,但下载的压缩包中并不包含Java运行环境,需要用户自己另行安装JRE,并且要在操作系统的环境变量中指明JRE中bin的路......

阅读全文(1849) | 评论:2