示波器程序

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.

 

 

 

 

 

你可能感兴趣的:(eclipse,thread,jar,Class,Constructor,textbox)