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.