?? jdcapp.java
字號:
/* * JdcApp.java * * Created on 2003年6月25日, 下午4:06 */package handenglish;import javax.microedition.midlet.*;import javax.microedition.lcdui.*;import java.lang.*;import java.util.*;/** * * @author Administrator * @version */public class JdcApp extends Canvas implements Runnable{ /** * paint */ public int STATUS_PLAY=1; public int STATUS_WAITREPEAT=2; public int STATUS_WAITWRITEWORD=3; public int STATUS_WAITDELWORD=4; public int STATUS_WAITHELP=5; Thread m_thread; boolean m_jugThread; Midlet midlet; //newjdc m_nowMainApp; int m_unitId;//當前所播放的單元號 0開始 int m_wordId; Vector m_unitContent; int m_unitSize; int m_nowSpeed; int m_playSpeed=8; Image m_readImg; int m_status; int m_unitType;//1-標準字庫 StringBuffer sss,sss1; String tempC,tempC1; public JdcApp(Midlet midlet,int nowUnitType,int nowUnitId) { setFullScreenMode( true ); m_thread=new Thread(this); m_jugThread=false; this.midlet=midlet; m_unitType=nowUnitType; m_unitId=nowUnitId; m_unitContent=new Vector(); midlet.getUnit(nowUnitType,nowUnitId,m_unitContent); try { sss =new StringBuffer(); sss1=new StringBuffer(); m_readImg=Image.createImage("/handenglish/images/read.png"); } catch(Exception e) { } beginNewPlay(); } public void SetUnitId(int nowUnitId) { m_unitId=nowUnitId; } public void drawSpell(Graphics g,String nowSpell,int nowX,int nowY,Image readImage) { int tempReadX=nowX; int tempY=nowY; if (nowSpell.length()>0) { g.drawString("[",tempReadX,tempY+1,Graphics.LEFT|Graphics.TOP); tempReadX+=4; int tLen = nowSpell.length(); for(int j=0;j< tLen;j++) { char tempC=nowSpell.charAt(j); if ((tempC>='0')&&(tempC<='9')) { int tempReadP=tempC-'0'; if (tempReadP<1) { g.setClip(tempReadX,tempY,5,13); g.drawImage(readImage,tempReadX,tempY,Graphics.LEFT|Graphics.TOP); tempReadX+=7; } else if (tempReadP==1) { g.setClip(tempReadX,tempY,6,13); g.drawImage(readImage,tempReadX-5,tempY,Graphics.LEFT|Graphics.TOP); tempReadX+=8; } else if (tempReadP<5) { g.setClip(tempReadX,tempY,5,13); g.drawImage(readImage,tempReadX-(tempReadP-1)*5-6,tempY,Graphics.LEFT|Graphics.TOP); tempReadX+=7; } else if (tempReadP==5) { g.setClip(tempReadX,tempY,9,13); g.drawImage(readImage,tempReadX-(tempReadP-1)*5-6,tempY,Graphics.LEFT|Graphics.TOP); tempReadX+=11; } else if (tempReadP>5) { g.setClip(tempReadX,tempY,5,13); g.drawImage(readImage,tempReadX-(tempReadP-2)*5-6-9,tempY,Graphics.LEFT|Graphics.TOP); tempReadX+=7; } } else if (tempC=='=') { g.setClip(tempReadX,tempY,5,13); g.drawImage(readImage,tempReadX-8*5-6-9,tempY,Graphics.LEFT|Graphics.TOP); tempReadX+=7; } else if (tempC==';') { g.setClip(tempReadX,tempY,2,13); g.drawImage(readImage,tempReadX-9*5-6-9,tempY,Graphics.LEFT|Graphics.TOP); tempReadX+=3; } else { g.setClip(0,0,128,128); g.drawString(String.valueOf(tempC),tempReadX,tempY+1,Graphics.LEFT|Graphics.TOP); if ((tempC=='i')||(tempC=='l')||(tempC=='j')||(tempC=='\'')||(tempC==':')||(tempC=='r')) tempReadX+=4; else if ((tempC=='m')||(tempC=='w')) tempReadX+=10; else tempReadX+=6; } } g.setClip(0,0,128,128); g.drawString("]",tempReadX,tempY+1,Graphics.LEFT|Graphics.TOP); } } public void paint(Graphics g) { int tempY=5; g.setFont(Font.getFont(Font.FACE_SYSTEM,Font.STYLE_PLAIN,Font.SIZE_SMALL)); g.setColor(0,0,0); g.fillRect(0,0,128,128); g.setColor(255,255,0); if (m_unitSize>0) { // StringBuffer sss,sss1; sss.delete(0,sss.length() ); if(m_unitType==1) //sss=new StringBuffer( sss.append( m_unitId+1); else sss.append( m_unitSize); //sss=new StringBuffer(String.valueOf(m_unitSize)); sss.append("-"); sss.append(m_wordId+1); g.drawString(sss.toString(),5,tempY,Graphics.LEFT|Graphics.TOP); // sss=null; sss.delete(0,sss.length() ); //sss=new StringBuffer("計時: "); sss.append( "計時: "); sss.append(m_playSpeed-m_nowSpeed); sss1.delete(0,sss1.length() ); //sss1=new StringBuffer("中文解釋是"); sss1.append( "中文解釋是"); for(int i=0;i<m_nowSpeed;i++) { sss1.append(">"); } g.drawString(sss.toString(),90,tempY,Graphics.LEFT|Graphics.TOP); tempY+=15; g.drawString((String)m_unitContent.elementAt(m_wordId*3),5,tempY,Graphics.LEFT|Graphics.TOP); tempY+=14; drawSpell(g,(String)m_unitContent.elementAt(m_wordId*3+1),5,tempY,m_readImg); tempY+=20; if (m_nowSpeed>(m_playSpeed/2-1)) { tempC=(String)m_unitContent.elementAt(m_wordId*3+2); while( tempC.length()>10) { tempC1=tempC.substring(0,10); g.drawString(tempC1,5,tempY,Graphics.LEFT|Graphics.TOP); tempC=tempC.substring(10); tempY+=18; } g.drawString(tempC,5,tempY,Graphics.LEFT|Graphics.TOP); } else { g.drawString(sss1.toString(),2,tempY,Graphics.LEFT|Graphics.TOP); } if ((m_wordId<m_unitSize-1)||(m_nowSpeed<m_playSpeed)) { if (m_unitType!=0) g.drawString("記錄",2,110,Graphics.LEFT|Graphics.TOP); else g.drawString("刪除",2,110,Graphics.LEFT|Graphics.TOP); } else { g.drawString("重新",2,110,Graphics.LEFT|Graphics.TOP); m_status=STATUS_WAITREPEAT; } g.drawString("0幫助",64,110,Graphics.HCENTER|Graphics.TOP); g.drawString("返回",100,110,Graphics.LEFT|Graphics.TOP); if ((m_status==STATUS_WAITWRITEWORD)||(m_status==STATUS_WAITDELWORD)||(m_status==STATUS_WAITHELP)) { if(m_status==STATUS_WAITHELP) { g.setColor(255,255,255); g.fillRoundRect(5,5,118,110,2,2); g.setColor(51,0,0); g.drawRect(6,6,115,107); g.drawString("上下鍵單詞選擇",10,10,g.LEFT|g.TOP); g.drawString("提機鍵直接顯示中文",10,30,g.LEFT|g.TOP); if (m_unitType==1) { g.drawString("左右鍵單元選擇",10,50,g.LEFT|g.TOP); g.drawString("記錄功能把單詞記錄",10,70,g.LEFT|g.TOP); g.drawString("到自定義單詞集中",10,90,g.LEFT|g.TOP); } else { g.drawString("刪除功能刪除自定義",10,50,g.LEFT|g.TOP); g.drawString("單詞",10,70,g.LEFT|g.TOP); } } else { g.setColor(255,255,255); g.fillRoundRect(18,38,94,54,2,2); g.setColor(51,0,0); g.drawRect(20,40,90,50); if(m_status==STATUS_WAITWRITEWORD) { g.drawString("記錄當前單詞",25,42,g.LEFT|g.TOP); g.drawString("按提機鍵確認,",25,58,g.LEFT|g.TOP); g.drawString("其他鍵放棄。",25,74,g.LEFT|g.TOP); } else { g.drawString("刪除當前單詞",25,42,g.LEFT|g.TOP); g.drawString("按提機鍵確認,",25,58,g.LEFT|g.TOP); g.drawString("其他鍵放棄。",25,74,g.LEFT|g.TOP); } } } g.setColor(255,255,0); } else { g.drawString("當前詞集暫無單詞...",64,64,g.HCENTER|g.TOP); g.drawString("返回",100,110,Graphics.LEFT|Graphics.TOP); } } public void startThread() { m_jugThread=true; m_thread.start(); } public void stopThread() { m_jugThread=false; m_thread = null; } public void beginNewPlay() { m_wordId=0; m_nowSpeed=0; m_status=STATUS_PLAY; if (m_unitContent==null) { m_unitSize=0; } else m_unitSize=m_unitContent.size()/3; } /** * Called when a key is pressed. */ protected void keyPressed(int keyCode) { if ((m_status==STATUS_WAITWRITEWORD)||(m_status==STATUS_WAITDELWORD)||(m_status==STATUS_WAITHELP)) { if(keyCode==-5) { if(m_status==STATUS_WAITWRITEWORD) { midlet.doWriteWord((String)m_unitContent.elementAt(m_wordId*3),(String)m_unitContent.elementAt(m_wordId*3+1),(String)m_unitContent.elementAt(m_wordId*3+2)); } else if(m_status==STATUS_WAITDELWORD) { if(midlet.doDelWord((String)m_unitContent.elementAt(m_wordId*3))) { m_unitContent.removeElementAt(m_wordId*3); m_unitContent.removeElementAt(m_wordId*3); m_unitContent.removeElementAt(m_wordId*3); beginNewPlay(); } } } m_status=STATUS_PLAY; } else { switch (keyCode) { case -7: stopThread(); midlet.setUnitPos(m_unitId+1); midlet.nowDisplay(this,midlet.WIN_JDC); break; case 32: if (m_status==STATUS_WAITREPEAT) { beginNewPlay(); } else if (m_unitType==1) m_status=STATUS_WAITWRITEWORD; else m_status=STATUS_WAITDELWORD; break; case -3: if (m_unitType==1) { if (m_unitId>0) { m_unitId--; midlet.getUnit(m_unitType,m_unitId,m_unitContent); beginNewPlay(); } } break; case -4: if(m_unitType==1) { if (m_unitId<midlet.m_unitNumber-1) { m_unitId++; midlet.getUnit(m_unitType,m_unitId,m_unitContent); beginNewPlay(); // repaint(); } } break; case -2: if (m_wordId<m_unitSize-1) { m_wordId++; m_nowSpeed=0; m_status=STATUS_PLAY; } break; case -1: if (m_wordId>0) { m_wordId--; m_nowSpeed=0; m_status=STATUS_PLAY; } break; case -5: if (m_nowSpeed<(m_playSpeed/2)) m_nowSpeed=m_playSpeed/2; break; case KEY_NUM0: m_status=STATUS_WAITHELP; break; } } } public void run() { int tempTime=0; while(m_jugThread) { try { Thread.sleep(200); if (m_status==STATUS_PLAY) { if(tempTime<6) { tempTime++; continue; } else { m_nowSpeed++; tempTime=0; System.gc(); } if (m_nowSpeed>m_playSpeed) { if(m_wordId<m_unitSize-1) { m_wordId++; m_nowSpeed=0; } else { m_status=STATUS_WAITREPEAT; } } } //Display.getDisplay( midlet ).callSerially( this ); repaint(); serviceRepaints(); } catch(Exception e) { } } } }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -