站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2ME 专题新手们,一起努力啊!——我的学习笔记

新手们,一起努力啊!——我的学习笔记

摘要: 新手们,一起努力啊!——我的学习笔记
<tr><td>
http:///tech/article775.html
声明:学习j2me不到1个月,以前从没接触过java,很多JAVA的基本概念都不懂。贴出我的学习笔记,一来如果有人跟我情况相同,可以从中参考一下,二来请高手看看我的理解是否有偏差,最好能指点一下,呵呵。
我的sdk是1.4.1_01,IDE是sun one studio 4 me
J2ME编辑器(IDE)
如果没有改过包(package)的主类(MIDlet Classes,包的执行类,类似于main函数的作用),改动包的其它类,执行程序时不会重编译,也就是程序不会有任何变化。想看到改变其它类的代码后的执行效果,必须改动一下主类,无论是否作了实质上的改动(比如按一下空格键),然后按F6执行,IDE就会重新编译包的所有类并自动保存。
J2ME如何作图(Graphics)
必须使用一个Canvas的子类,并实现(implements)类Runnable,如下列代码
public class DrawClass extends Canvas implements Runnable {…}
IDE会自动增加一个抽象方法public void run(){…},在该方法中调用repaint()方法。repaint方法是请求重绘显示区,而Graphics类的所有方法,必须在抽象方法public void paint(Graphics g)中调用,当JAVA运行系统(Java Runtime System,JRE)收到repaint请求时,会自动调用paint方法。如:
public class DrawClass extends Canvas implements Runnable {
public DrawClass(){…}
public void run(){
repaint();
}
public void paint(Graphics g){
g.drawRect(0,0,50,50); //画一个空心矩形
}
在主类或其它需要绘图的类中,使用如下代码调用上述的DrawClass
public class classname{
[] private Display display; //定义显示设备
private DrawClass myDraw; //定义绘图类
//构造函数
public classname{
myDraw=new DrawClass(); //创建类的实例
}

public void startApp(){
[] display=Display.getDisplay(this); //获得当前显示设备
[]display.setCurrent(myDraw); //当前显示设备指向myDraw.(个人理解,未找到准确解释)
}
anchor point
[]anchor point字面意思是抛锚点,可以理解为轴心。在Graphics的drawChar,drawString等在图形模式下输出字符的方法中使用。如drawString(String str,int x,int y,anchor)中,x,y是轴心,anchor则代表对这个轴心的对齐方式。
(理解不够到位,下次补上)有高手帮我补上吗??

Calendar
定义日期:Calendar date=Calendar.getInstance();
不同于VB和Js cript,设置日期采用:date.set(date.YEAR,2002)设置年,date.set(date.MONTH,11)设置月,有效值0-11(1月到12月,同Js cript),date.set(date.DAY_OF_MONTH,1)设置日。
和VB和Js cript不同的是,当日期参数小于1或大于当月最大天数时,VB和Js cript会自动计算,如DAY_OF_MONTH等于0,则返回日期为上月最后一天,DAY_OF_MONTH大于当月最大天数,则返回下月第n天。J2ME则会产生IllegalArgumentException(无效参数异常),要注意的是,此异常并非在调用date.set时产生,而是在随后处理date变量时产生。如调用date.get()或date.toString()时产生异常。示例代码:
int d=getDayOfWeek(32)
//获得日期是星期几。
ptivate int getDayOfWeek(int day){
Calendar date=Calendar.getInstance();
date.set(date.YEAR,2002);
date.set(date.MONTH,11);
int d;
try{
date.set(date.DAY_OF_MONTH,day);//无效参数,但此句执行正常,不会跳转到catch块。
d=date.get(DAY_OF_WEEK);//获得该日是星期几。此处产生异常。跳转至catch块。
[]}catch(IllegalArgumentException e){
[]if(day<1){
day=1;
}else{
--day;
}
date.set(date.DAY_OF_MONTH,day);//重新设置日期。
d=date.get(DAY_OF_WEEK);//执行正确,获得星期数。
}
return d;
}
[]
http:///tech/article775.html
</td></tr></table></td> </tr> <tr> <td background="/pic/split.gif" height=1></td> </tr> <tr> <td class="tdMargin1">
↑返回目录
前一篇: 抛砖引玉。判断数字键盘输入的字母。
后一篇: 给大家贡献一个Properties类