1.语法正确,但是图片不能显示,还提示IO异常—>打开res文件夹刷新,折叠后再刷新,重启Eclipse。软件问题
2.drawString语法错误—>drawString中不能使用VCENTRE锚点
3.在方法体里面定义的变量出现修饰错误—>方法体内定义的变量不能存在: private protected public static (因为定义访问修饰符都是为了控制访问的,既然是方法体,在方法体内定义这些有用吗?
4.方法中不可以再套用方法,但可以调用方法
5.重写Canvas中的keypressed方法—>一定是public的(该方法是protect)
6.在使用高级界面和低级界面转换时,高级界面实现输入时不必继承Screen,只需要继承Form就可以了
7.继承Form类时出现(Implicit super constructor Form() is undefined. Must explicitly invoke another constructor错误)—>
这是因为Form类已经有构造函数了,在想重新写个构造函数,必须使用super调用父类的构造方法
8.TextBox初始化时也可以—>private TextBox inputName=null;
9.如果想把一个类中的数传到另一个类中去,可以:
在类中定义一个方法
public short getData(int value)
{
return (short)0;
}
10. 把字符串转换成int,使用value=Integer.parseInt(tb.getString());
不是value= Int.parseInt(tb.getString());
11.Canvas类中按键keypressed事件无反应—>Canvas的事件和CommandListener冲突,被CommandListener给拦截了。canvas类一般不用CommandLisentener
12.Canvas类中按键keypressed事件无反应—>keyPressed方法的拼写错误,中间的P写成小写的p了!!!
13.使用上下左右键判断时应注意转换游戏键—>利用函数:
protected void keyRepeated(int keyCode) {
int action = this.getGameAction(keyCode);
if (action==Canvas.FIRE){
……………………
}
}
14.使用上下左右键判断时应注意转换游戏键—>或者直接用keyCode数值来判断(上下左右数值分别是-1 -2 -3 -4)
protected void keyRepeated(int keyCode) {
if (keyCode==-1){
……………………
}
}
15.System.out.println(" ");函数只能在类的方法中调用
16.构造函数没有返回值
17.利用建立一个方法来传递参数时:aa.getNumber(); aa初始化时不能这样: aa=null; 必须实例化aa才可以用aa.getNumber();
否则就会出现NullPointerException异常!!!
18.在InputScreen(继承textbox)类中定义了一个空的tb,以便使用textbox方法tb.getstring();结果出现NullPointerException异常!!! (这是因为tb为空,必须实例化tb)—>最好的办法是使用 this.getstring();
19. 定义变量是有顺序的 比如:
public MainOsci mo;
private InputScreen is=new InputScreen(mo); 正确
————————————————————————————————————————
private InputScreen is=new InputScreen(mo);
public MainOsci mo; 错误
20.通过手机键盘输入的数字“1~9”存储在字符char中,char对应的值不是ASCII码(用char-32),而是keycode值(char-48)
21.出现“Cannot make a static reference to the non-static method getValue(int) from the type ADConverter 可是我的程序里面根本就没有静态方法和静态变量啊,为什么啊?????”的原因:http://topic.csdn.net/u/20100325/18/ba8e00dd-8295-4e7c-b30a-7cf08573bdb5.html
22.使用线程时要使用死循环,否则线程只使用一次就结束了,线程不起作用
23.(int)Math.sin3的值为0—>因为int不能表示小数!!!
24.导出文件时出现“Resource is out of sync with the file system”问题—>查阅资料后发现这是文件系统不同步的问题,是因为在eclipse之外对工程中的resource进行修改引起的——> 解决办法:需要手动刷新一下资源管理器
25.导出的jar文件在安装时显示“应用程序文件错误(jar)”——> MANIFEST 文件没有设置主类,解决方法:MANIFEST文件中包含以下信息:
Manifest-Version: 1.0
MIDlet-Vendor: Midlet Suite Vendor
MIDlet-Version: 1.0.0
MicroEdition-Configuration: CLDC-1.1
MIDlet-Name: YZG Midlet Suite
MicroEdition-Profile: MIDP-2.0
MIDlet-1: oscilloscope.MainOsci //设置主类 MIDlet-1:(空格)主类名,,包名.主类名(回车)
26.导出的jar文件在运行时显示“爪哇程序结束”——>主类没设置好——>只写了:包名.主类名(没写,,前面的主类名)
27.程序在电脑上能运行,打包成jar在手机上不能运行(去掉if等语句就可以)——>软件问题,打包没打好——>最好的办法是去workspace/工程名/.mtj.tmp/emulation文件下就有打包好的jar,肯定好使!!!
28.输入界面的TextBox自己调人输入键盘,按确认键后,确认的是输入完毕,不是TextBox中的确认,自己定义TextBox中的确认被拦截了
29.多线程的使用格式:
不是: class A implements Runnable{
th1.stat();
run(){
………………
}
是: class A {
th1.stat();
class B implements Runnable{
run(){
………………
}
}
30.在方法里面定义的变量显示“没有定义”如果把类移动到独立的文件中就不显示了——>因为在方法里的变量不能访问同一个文件下定义的类(既:该方法外面的class)——>解决:把变量移到最外层(构造函数之上)。
31.定义的class线程在使用th.Start()时,显示“The method start() is undefined”,而用extend 就不出现这种错误——>利用Runnable接口时,还需要额外的一步(相对于extends thread),需要实例化一个对象,使用该对象作为实例化Thread对象的参数,然后使用Thread类中的start() 方法启动线程——> PrintRunnable pr = new PrintRunnable(); Thread th1 = new Thread(pr); th1.start();
32.在字符转换时要进行异常处理,否则不能转换时将出错“java.lang.NumberFormatException”
33.类的定义class void A() extends Tread{} ×
34.repaint()函数不是清空画布之后重画!!!——>而是直接在原有的基础上接着画
35.出现“IllegalThreadStateException”异常——>thread.start()方法只能调用一次,被多次调用抛出异常。做个判断,只允许执行一次,或者放在只被执行一次的地方,如构造 http://topic.csdn.net/u/20100402/20/0bc1cafc-06ce-4586-9435-9baebf19124f.html
36.停止线程的方法——>在线程中写一个标记,if(Flag){return;}
37.手机的坐标与笛卡尔坐标不一样,Y轴上负下正,并且改变不了
38.明明是一条画线语句却画出了两条线——> 如果线太长了,屏幕画不下时,画不下的部分补偿到(平移)至上面
39.用循环语句 g.drawLine(x, -value, x+1,-nextValue) 画线时只能画第一条线,从第二条线就不画在屏幕上了——>我在画背景图片时加入了一个threadStopFlag 让线程停止的标志,结果调用画背景方法时线程停止了!!! 误加入的,不知道为什么加上那句话,去掉就没问题了……
40.构造函数在第一次new的时候就开始执行,且按照里面的调用语句开始在后台运行整个类,但是该类中的某些方法却不可以执行(比如paint()方法只有在canvas为当前界面时才可以执行,它不能在后台运行,虽然构造函数里有repaint(),但却不运行paint())
41.画线时有时出两条线,有时不按照你定的位置画线——>使用了g.translate(x,y)语句,坐标多次变换,换迷糊你!!!——>最好的办法是变换一次在使用完后再变换回来g.translate(-x,-y)
42.g.translate(x,y)语句在遇到重画repaint()时坐标变换重回原点
43.canvas类使用特别注意的问题:canvas里面的命令大部分用的数据都是int类——>比如:int screenWidth/2 的值将会四舍五入!!!所以在画多条线时会与你画的有出入(由于四舍五入问题引起的)——>解决办法:利用坐标变换g.translate(x,y);从0点开始画就不会错了,不要从一个定值开始画(有误差)……
44.把else后面的一条语句放在{}中,显示声明else错误。原因:语句后面少了一个“;”
45.J2ME标签里不可以定义变量
46.