?? wordupdataview.java
字號:
/* * MainCanvas.java * * Created on 2003年11月12日, 下午9:45 */package handenglish;import javax.microedition.lcdui.*;import javax.microedition.io.*;import java.io.*;import javax.microedition.rms.*;import java.util.*;import javax.microedition.midlet.*;/** * * @author com * @version */public class WordUpdataView extends Canvas implements ReceiveListener,Runnable{//CommandListener, private Receive receive; //0-初始化 1-更新信息 2-更新列表中 3-列表下載完畢 4-顯示列表 5-下載詞庫中 6-下載完畢 7-選擇冊數 private int curState; private Midlet midlet; private boolean checked; private int listNum,listNumMax,loadPre; private Thread loadThread; public int listSelectNum,newNumber,listSelectNumMax; public String listSelectName; public boolean checkUp,checkLoad,listNull,m_First; // private int oldNumber; // private String oldName; private int receiveNO; public WordUpdataView(Midlet midlet){ setFullScreenMode( true ); checkUp=false;; this.midlet = midlet; receive = new Receive(midlet); receive.setReceiveListener( this ); listNum=0; checked = false; loadPre=0; } public void setCurState(int nowCurState){ curState=nowCurState; } public void startThread(){ if(loadThread==null) { loadThread=new Thread(this); loadThread.start(); } } public void stopThread() { loadThread = null; } public void paint(Graphics g) { g.setColor(255,255,255); g.fillRect(0,0,128,128); g.setColor(0,0,0); g.setFont(Font.getFont(Font.FACE_SYSTEM,Font.STYLE_PLAIN,Font.SIZE_SMALL)); if(curState==0||(curState==2&&receiveNO==0)||(curState==5&&receiveNO==0)){ g.drawString( "正在與服務器",15,10,g.TOP| g.LEFT ); g.drawString( "建立連接,",15,30,g.TOP| g.LEFT ); g.drawString( "請稍候......" ,15,50,g.TOP| g.LEFT ); g.drawString( "[由于有時網絡繁忙," ,15,70,g.TOP| g.LEFT ); g.drawString( "可能需等待較長時間]" ,15,90,g.TOP| g.LEFT ); g.drawString("取消",100,113,g.LEFT|g.TOP); } else if( curState == 1 ) { g.drawString( "更新信息",45,10,g.TOP| g.LEFT); g.drawString( "詞庫列表已更新" , 5,40,g.TOP| g.LEFT); g.drawString( "是否下載新的詞庫列表" , 5,65,g.TOP| g.LEFT); g.drawString("確定",5,113,g.LEFT|g.TOP); g.drawString("取消",100,113,g.LEFT|g.TOP); } else if ( curState == 2) { if(receiveNO==1){ g.drawString( "正在接收詞庫列表,",15,20,g.TOP| g.LEFT); g.drawString( "已下載" ,15,60,g.TOP| g.LEFT); } else if(receiveNO==2){ g.drawString( "正在存儲詞庫列表,",15,20,g.TOP| g.LEFT); g.drawString( "已存儲" ,15,60,g.TOP| g.LEFT); } g.drawString( "請稍候......" ,15,40,g.TOP| g.LEFT); g.drawString( ""+loadPre+"%",75,60,g.TOP| g.LEFT); //g.drawString("取消",100,113,g.LEFT|g.TOP); for(int i=0;i<10;i++) g.drawRect(15+8*i,80,6,12); for(int i=0;i<loadPre/10;i++){ g.fillRect(15+8*i,80,6,12); } } else if(curState == 5){ if(receiveNO==1){ g.drawString( "正在接收詞庫,",15,20,g.TOP| g.LEFT); g.drawString( "已下載" ,15,60,g.TOP| g.LEFT); } else if(receiveNO==2){ g.drawString( "正在存儲詞庫,",15,20,g.TOP| g.LEFT); g.drawString( "已存儲" ,15,60,g.TOP| g.LEFT); } g.drawString( "請稍候......" , 15,40,g.TOP| g.LEFT); g.drawString( ""+loadPre+"%",75,60,g.TOP| g.LEFT); //g.drawString("取消",100,113,g.LEFT|g.TOP); for(int i=0;i<10;i++) g.drawRect(15+8*i,80,6,12); for(int i=0;i<loadPre/10;i++)// g.fillRect(15+8*i,80,6,12); } else if(curState == 7){ g.drawString( "詞庫信息",45,10,g.TOP| g.LEFT); if(SysParam.getInstance().storeVolume<0){ g.drawString( "當前詞庫為空" ,5,40,g.TOP| g.LEFT); } else{ g.drawString( "當前已下載的詞庫:" ,5,30,g.TOP| g.LEFT); g.drawString( SysParam.getInstance().storeName+"第"+SysParam.getInstance().storeVolume+"冊" ,5,45,g.TOP| g.LEFT); } g.drawString( "你要下載的詞庫:",5,65,g.TOP| g.LEFT); g.drawString( listSelectName ,5,80,g.TOP| g.LEFT); if ( m_First ) { if ( listSelectName.equals( SysParam.getInstance().storeName ) && ( newNumber < listSelectNumMax ) ) newNumber =SysParam.getInstance().storeVolume + 1; m_First = false; } g.drawString( "選擇冊數: ["+String.valueOf(newNumber)+"]" ,5,95,g.TOP| g.LEFT); g.drawString("確定",5,113,g.LEFT|g.TOP); g.drawString("取消",100,113,g.LEFT|g.TOP); } } /* public void getOld(){ oldName=SysParam.getInstance().storeName; oldNumber=SysParam.getInstance().storeVolume; } */ public void dataReceived(int cmd, int status) { switch( cmd ) { case Receive.MSG_LOGIN: if ( status != 0 ) { curState = 1; repaint(); } else{ stopThread(); midlet.nowDisplay(this,midlet.WIN_MENU); } break; case Receive.MSG_LIST: stopThread(); midlet.nowDisplay(this,midlet.WIN_MENU); break; case Receive.MSG_WORDS: stopThread(); midlet.setUnitPos(1); midlet.nowDisplay(this,midlet.WIN_MENU); break; } } public void dataReceiving(int cmd, int pos, int total,int send) { receiveNO=send; loadPre=pos*100/total; repaint(); serviceRepaints(); } public void errorReceived(int errno) { Alert alert = new Alert( "錯誤信息","通訊錯誤,請與服務提供商聯系!錯誤號=" + errno ,null,AlertType.ERROR ); alert.setTimeout( Alert.FOREVER ); Display.getDisplay( midlet ).setCurrent( alert ); } public void getList() { receive.getList(0); } public void getWords(String name,int no,int volume ) { receive.getWords(name,no,volume ); } public void run(){ Thread current = Thread.currentThread(); while(current == loadThread){ try{ Thread.sleep(200); repaint(); serviceRepaints(); if(!checkLoad){ checkLoad=true; if(curState==0) receive.checkUpdate(); else if(curState==2) getList(); else if(curState==5) getWords(listSelectName,listSelectNum,newNumber); } }catch(Exception e){ //System.out.println(e.toString()); } } } protected void keyPressed(int keyCode) { if(keyCode==-7) { if(curState==1){ receive.closeConn(); midlet.nowDisplay(this,midlet.WIN_MENU); } else if(curState==7){ // midlet.showList(this); midlet.nowDisplay(this,midlet.WIN_LIST ); } else if((curState==5&&receiveNO==0)||(curState==2&&receiveNO==0)||curState==0){ stopThread(); receive.closeConn(); midlet.nowDisplay(this,midlet.WIN_MENU); } } else if(keyCode==32 || keyCode == -6){ if(curState==1){ curState=2; checkUp=true; //startThread(); checkLoad=false; /*curState=2; repaint(); serviceRepaints(); getList();*/ } else if(curState==7){ if(!listNull){ curState=5; checkUp=true; startThread(); checkLoad=false; /*curState=5; repaint(); serviceRepaints(); getWords(listSelectName,listSelectNum,newNumber);*/ } } } else if(keyCode==-3){ if(curState == 7){ if(newNumber>1) newNumber--; else newNumber=listSelectNumMax; repaint(); } } else if(keyCode==-4){ if(curState == 7){ if(newNumber<listSelectNumMax) newNumber++; else newNumber=1; repaint(); } } } public void showNotify() { if(!checkUp&&curState==0){ loadPre=0; checkUp=true; startThread(); checkLoad=false; } else if(!checkUp&&curState==2){ loadPre=0; checkUp=true; startThread(); checkLoad=false; } } }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -