JAVA网站制作之J2ME进修条记(八)
先谈谈我对java的一些认识。我选择java,是因为他语法简单,功能强大,从web,到桌面,到嵌入式,无所不能。但当我进一步了解了java后,感叹,java原来也有许多缺点。条记明天买了2.5磅咖啡豆,星巴克的。有点点贵,用了599年夜洋,呵呵,偶然奢靡一下也不为过嘛。方才磨了一杯咖啡,点上烟,呵呵,持续入手下手j2me的进修过程。虽然说明天礼拜六,但是估量明天看不了几,今天要往公司加班,以是明天仍是要早点歇息。。。想一想前几个礼拜,soho的时分天天早晨就是我的事情工夫,日间嘛。。嘿嘿,睡觉。。。那真是幸运呀。。。好日子不再咯。。。呵呵,TextBox,仿佛看名字就晓得干甚么的了,HTML内里的输出框。呵呵,感到应当差未几。写一个(和TextBox有不异利用办法的另有一个对象:TextField,呵呵,感到这个就是HTML内里的TextArea罢了^_^)
测试程序先:
packagecom.graph;
/**
*@authorYouLi
*
*CopyRight(C)2005www.iguess.com.cn
*/
importjavax.microedition.midlet.*;
importjavax.microedition.lcdui.*;
publicclassTextBoxTestextendsMIDletimplementsCommandListener{
privateDisplaydisplay;
Commandcommit;
publicTextBoxTest(){
display=Display.getDisplay(this);
//TODO主动天生机关函数存根
}
protectedvoidstartApp()throwsMIDletStateChangeException{
//TODO主动天生办法存根
commit=newCommand("提交",Command.SCREEN,1);
TextBoxtb=newTextBox("输出框","default",12,TextField.ANY);
tb.addCommand(commit);
tb.setCommandListener(this);
display.setCurrent(tb);
}
protectedvoidpauseApp(){
//TODO主动天生办法存根
}
protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{
//TODO主动天生办法存根
}
publicvoidcommandAction(Commandc,Displayables){
TextBoxtmp=(TextBox)s;
System.out.println(tmp.getString());
}
}
这个程序的功效是将屏幕上输出的内容在背景打印出来。TextBox("输出框","default",12,TextField.ANY),这个是用来设置对话框的属性。我明天测试了一下,看了一下文档,次要在最初两个属性,数字暗示这个输出框能够承受的最年夜字符数量,TextField.ANY-恣意字元;TextField.EMAILADDR-承受Email地点;TextField.NUMERIC-只承受数字输出;TextField.PASSWORD-输出暗码;TextField.PHONENUMBER-输出德律风号码,就是说能够承受数字,空格,星号,井号;TextField.URL-承受输出的URL;TextField.CONSTRAINT_MASK-用来和TextBox的getConstraints()办法所传回的了局做AND逻辑运算,然后能够获得今朝的限制设置。固然,这个参数不要在TextBox创立的时分利用。
呵呵,TextBox算是我学了这几天最复杂最简单的工具了,呵呵,看来明天心境不错,多是星巴克的感化哦。呵呵。。。对了,说点题外话,喝咖啡的时分假如喜好到场牛奶的话必定是咖啡到进牛奶,如许咖啡内里的牛奶喷鼻味加倍浑厚^_^也是我的习气,固然,我历来不放糖,我以为那回损坏咖啡原本的酸味。歇息的时分磨上一杯现磨的咖啡会让你即刻以为生存的文雅的地方,也会让你临时阔别乡村的懊恼。咖啡&烟,一个宁静的周末加上j2me材料的相伴,感到不错:)
呵呵,扯远了=_=!
再入手下手看看From咯,和HTML内里一样,Form独自存在是没有任何意义的。它必需包括有Item类的子类才会有感化。
写了一个Form的测试程序:
packagecom.graph;
importjavax.microedition.midlet.*;
importjavax.microedition.lcdui.*;
/**
*@authorYouLi
*
*CopyRight(C)2005www.iguess.com.cn
*/
publicclassFormTestextendsMIDletimplementsCommandListener,ItemStateListener{
privateDisplaydisplay;
Commandcommit;
publicFormTest(){
display=Display.getDisplay(this);
//TODO主动天生机关函数存根
}
protectedvoidstartApp()throwsMIDletStateChangeException{
//TODO主动天生办法存根
commit=newCommand("Commit",Command.SCREEN,1);
Formf=newForm("FormTest");
f.append("String1");//相称于newStringItem(null,"String1")
f.append("String2");
f.append(newStringItem("Label1","Content2"));
f.append(newStringItem("Label2","Content2"));
f.addCommand(commit);
f.setCommandListener(this);
f.setItemStateListener(this);
display.setCurrent(f);
}
protectedvoidpauseApp(){
//TODO主动天生办法存根
}
protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{
//TODO主动天生办法存根
}
publicvoidcommandAction(Commandc,Displayables){
//TODO主动天生办法存根
Formtmp=(Form)s;
for(inti=0;i<tmp.size();i++){
StringItemsi=(StringItem)tmp.get(i);
//get()办法取回值是Item类,以是必要强迫转化味StringItem类。
System.out.println(si.getText());
}
}
publicvoiditemStateChanged(Itemarg0){
//TODO主动天生办法存根
}
}
呵呵,基础上再程序内里虽然说没有甚么正文,可是全部StringItem自己并非很庞大。以是也没有过量的纪录。而ImageItem的利用与StringItem基础不异。它的机关办法是:
Append(newImageItem(标记笔墨,Image对象,地位把持参数,替换笔墨));
ImageItem地位参数次要就是以下几个咯:ImageItem.LAYOUT_DEFAULT;ImageItem.LAYOUT_LEFT;ImageItem.LAYOUT_RIGHT;ImageItem.LAYOUT_CENTER;ImageItem.LAYOUT_NEWLINE_BEFORE;ImageItem.LAYOUT_NELINE_AFTER
它的别的一个机关办法就是append(newImage());这个相称于挪用了Append(newImageItem(null,Image对象,ImageItem.LAYOUT_DEFAULT,null))来机关ImageItem对象。
ChoiceGroup,当Form与ChoiceGroup共同利用的时分就和再后面利用List一样,由于ChoiceGroup和List一样会为我们构建一个Choice选择框。仍是先看程序咯:
packagecom.graph;
/**
*@authorYouLi
*
*CopyRight(C)2005www.iguess.com.cn
*/
importjavax.microedition.midlet.*;
importjavax.microedition.lcdui.*;
publicclassChoiceGroupTestextendsMIDletimplementsItemStateListener{
privateDisplaydisplay;
publicChoiceGroupTest(){
display=Display.getDisplay(this);
//TODO主动天生机关函数存根
}
protectedvoidstartApp()throwsMIDletStateChangeException{
//TODO主动天生办法存根
Formf=newForm("FormTest");
ChoiceGroupcg=newChoiceGroup("ChoiceGroupTest",Choice.EXCLUSIVE);
//构建Choice的参数和List比拟,除IMPLICIT不成用外,EXCLUSIVE,IMPLICIT参数是能够用的
cg.append("A",null);
cg.append("B",null);
cg.append("C",null);
f.append(cg);
f.setItemStateListener(this);
display.setCurrent(f);
}
protectedvoidpauseApp(){
//TODO主动天生办法存根
}
protectedvoiddestroyApp(booleanb)throwsMIDletStateChangeException{
//TODO主动天生办法存根
}
publicvoiditemStateChanged(Itemitem){
//TODO主动天生办法存根
ChoiceGrouptmp=(ChoiceGroup)item;
System.out.println("Choice"+tmp.getSelectedIndex()+"selected");
}
}
一切的手机内里我们都看到了一个调剂音量的按钮,这个按钮实践上挪用的GUI介面元素就是Gauge。Gauge的机关办法内里有4个参数,第一个就是Gauge的标签,第二个就是Gauge是不是撑持与用户互动。剩下的两个参数就是这个图形的长度还宽度咯。
仍是看看例子吧。呵呵,感到像是例子编写员一样,这段工夫写这类例子写了良多。可是也有良多优点,呵呵,最少让我记着了很多工具。以是我倡议兄弟们不要靠拷贝,粘贴来写本人的代码,最好这类进修阶段就一行一行的写。
packagecom.graph;
/**
*@authorYouLi
*
*CopyRight(C)2005www.iguess.com.cn
*/
importjavax.microedition.lcdui.*;
importjavax.microedition.midlet.*;
publicclassGaugeTestextendsMIDletimplementsItemStateListener{
privateDisplaydisplay;
Gaugeg1;
Gaugeg2;
publicGaugeTest(){
display=Display.getDisplay(this);
//TODO主动天生机关函数存根
}
protectedvoidstartApp()throwsMIDletStateChangeException{
//TODO主动天生办法存根
Formf=newForm("FormTest");
g1=newGauge("Gauge1",true,200,100);
g2=newGauge("Gauge2",flase,200,100);
f.append(g1);
f.append(g2);
f.setItemStateListener(this);
display.setCurrent(f);
}
protectedvoidpauseApp(){
//TODO主动天生办法存根
}
protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{
//TODO主动天生办法存根
}
publicvoiditemStateChanged(Itemitem){
//TODO主动天生办法存根
Gaugetmp=(Gauge)item;
if(tmp.getLabel().equals("Gauge2")){
g1.setValue(tmp.getValue());
}
}
}
然后就是Form的别的一个对象,DateField。仍是写了一个对照复杂的工夫调剂。经由过程这个程序我们来看DateField的各项属性。
packagecom.graph;
/**
*@authorYouLi
*
*CopyRight(C)2005www.iguess.com.cn
*/
importjavax.microedition.midlet.*;
importjavax.microedition.lcdui.*;
importjava.util.*;
publicclassDateFieldTestextendsMIDletimplementsItemStateListener{
privateDisplaydisplay;
publicDateFieldTest(){
display=Display.getDisplay(this);
//TODO主动天生机关函数存根
}
protectedvoidstartApp()throwsMIDletStateChangeException{
//TODO主动天生办法存根
Formf=newForm("FormTest");
Datenow=newDate();
DateFielddf=
newDateField("DateFieldTest",DateField.DATE_TIME);
df.setDate(now);
f.append(df);
f.setItemStateListener(this);
display.setCurrent(f);
}
protectedvoidpauseApp(){
//TODO主动天生办法存根
}
protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{
//TODO主动天生办法存根
}
publicvoiditemStateChanged(Itemitem){
//TODO主动天生办法存根
DateFieldtmp=(DateField)item;
Dated=tmp.getDate();
System.out.println(d.getTime());
}
}
在初始化DateField的时分它有两个属性,第一个就是DateField的标签,第二个就是输出形式。MIDP一共为DateField供应了三种输出形式。DateField.DATE_TIME,DateField.DATE;DateField.TIME。(ps:虽然说有三种形式,不外由于一样平常情形下我们输出都必要日期与详细工夫都输出,以是我在例子内里也就是用的DateField.DATE_TIME形式咯。)
然后另有最初一个对照主要的初级图形处置事件,Ticker,这个类完成的效果就和HTML内里利用javascript写的一个赛马灯程序效果差未几。
packagecom.graph;
/**
*@authorYouLi
*
*CopyRight(C)2005www.iguess.com.cn
*/
importjavax.microedition.midlet.*;
importjavax.microedition.lcdui.*;
publicclassTickerTestextendsMIDletimplementsCommandListener{
privateDisplaydisplay;
Commandcommit;
publicTickerTest(){
display=Display.getDisplay(this);
//TODO主动天生机关函数存根
}
protectedvoidstartApp()throwsMIDletStateChangeException{
//TODO主动天生办法存根
commit=newCommand("Commit",Command.SCREEN,1);
TextBoxtb=new
TextBox("Content","TickerTest",20,TextField.ANY);
tb.setTicker(newTicker("TickerTest..."));
tb.addCommand(commit);
tb.setCommandListener(this);
display.setCurrent(tb);
}
protectedvoidpauseApp(){
//TODO主动天生办法存根
}
protectedvoiddestroyApp(booleanarg0)throwsMIDletStateChangeException{
//TODO主动天生办法存根
}
publicvoidcommandAction(Commandarg0,Displayables){
//TODO主动天生办法存根
TextBoxtmp=(TextBox)s;
System.out.println(tmp.getString());
}
}
可使用Ticker的getString()办法获得赛马灯中的笔墨,也能够经由过程setString()办法为赛马灯设置文本内容。
MIDP中几个主要的初级图形处置元素差未几也就这么多了。这几天也把本人头几天的进修条记看了一下,总结了一下几个做手持设备的开辟的时分应当注重的方面。呵呵,也算是本人筹办入手下手做实践开辟的一个筹办吧。
1、手持设备究竟不是PC,它的屏幕,电力供给,内存等等都很无限,以是我以为在做实践开辟的时分图形介面仍是应当已复杂为主,不该该过量的利用庞大的图形介面。固然,呵呵,游戏除外。我说的是做使用程序开辟的成绩。
2、只管利用初级图形处置元素,没有特别必要的时分如许做有益于我们做平台移值。呵呵,最少在做一个程序的时分应当用初级图形处置元素先完成基本模块的编写,然后在依据实践呆板的SDK得当的利用初级图形处置元素。
3、有输出框的元素,为了便利应当利用TextField.NUMBERIC等流动的输出体例,以避免用户在利用的时分过量的按键盘举行字符元素转化^_^
4、仿佛另有个kAWT图形处置包,团体不是很保举利用。这个包实践就是awt的简化版,在处置图形的效力和兼容性上另有一些成绩。呵呵,假如不出更新版本我想最好仍是不要利用咯。^_^
java比较简单,没有C++的烦琐,但学习时最好有C++为基础.与JSP和SQL起应用,功能强大. 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 是一种由美国SUN计算机公司(Sun Microsystems, Inc.)所研究而成的语言 是一种语言,用以产生「小应用程序(Applet(s)) 是一种语言,用以产生「小应用程序(Applet(s)) 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 你快去找一份Java的编程工作来做吧(如果是在校学生可以去做兼职啊),在实践中提高自己,那才是最快的。不过你得祈祷在公司里碰到一个高手,而且他 还愿意不厌其烦地教你,这样好象有点难哦!还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手,他们设计合理,考虑周到,再加上有广大的程序员参与,代码的价值自然是字字珠叽,铿锵有力(对不起,偶最近《金装四大才子》看多了)。 是一种突破用户端机器环境和CPU Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。 我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。 当然你也可以参加一些开源项目,一方面可以提高自己,另一方面也是为中国软件事业做贡献嘛!开发者在互联网上用CVS合作开发,用QQ,MSN,E-mail讨论联系,天南海北的程序员分散在各地却同时开发同一个软件,是不是很有意思呢? 是一种为 Internet发展的计算机语言 另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。 有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想) Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台 是一种使网页(Web Page)产生生动活泼画面的语言
页:
[1]
2